车的换道检测( 二 )
定义-“轮廓表示图像中曲线的点的列表 。 ”
轮廓由序列表示 , 每个序列都对下一个点的位置信息进行编码 。 我们在roi中多次运行cv2.findConteurs()来获取实体 , 然后使用cv2.drawContours()绘制轮廓区域 。 轮廓可以是点、边、多边形等 , 所以在绘制等高线时 , 我们做多边形近似 , 求出边的长度和区域的面积 。
函数cv2.drawContours()的工作原理是从根节点开始绘制一棵树(数据结构) , 然后连接后续点、边界框和Freeman链码 。
thresh = maskcontours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)# 定义轮廓的最小面积(忽略min以下的所有值)min_area = 1000cont_filtered = []# 过滤掉最小面积以下的所有轮廓线for cont in contours:if cv2.contourArea(cont) > min_area:cont_filtered.append(cont)cnt = cont_filtered[0]# 围绕轮廓画出矩形rect = cv2.minAreaRect(cnt)box = cv2.boxPoints(rect)box = np.int0(box)cv2.drawContours(frame,[box],0,(0,0,255),2)rows,cols = thresh.shape[:2][vx,vy,x,y] = cv2.fitLine(cnt, cv2.DIST_L2,0,0.01,0.01)lefty = int((-x*vy/vx) + y)righty = int(((cols-x)*vy/vx)+y)cv2.line(frame,(cols-1,righty),(0,lefty),(0,255,0),2)找到轮廓后的另一个重要任务是匹配它们 。 匹配轮廓意味着我们有两个独立的计算轮廓来相互比较 , 或者有一个轮廓与一个抽象模板进行比较 。
5.特征矩我们可以通过计算轮廓矩来比较两个轮廓 。 “特征矩是轮廓的总特征 , 通过将轮廓的所有像素相加来计算 。 ”
文章插图
力矩类型
空间特征矩:m00, m10, m01, m20, m11, m02, m30, m21, m12, m03.
中心特征矩:mu20, mu11, mu02, mu30, mu21, mu12, mu03.
Hu特征矩:有七个Hu特征矩(h0-h6)或(h1-h7) , 这两个符号都使用 。
我们使用cv2.fitEllipse()计算特征矩并在点上拟合椭圆 。 从轮廓线和特征矩中找到角度 , 因为改变车道需要45度旋转 , 这被视为汽车转弯角度的阈值 。
文章插图
M = cv2.moments(cnt)cx = int(M['m10']/M['m00'])cy = int(M['m01']/M['m00'])(x,y),(MA,ma),angle = cv2.fitEllipse(cnt)print('x= ', cx, 'y= ', cy, ' angle = ', round(rect[2],2))if(round(rect[2],2))<-45:# print('Lane change detected')popupmsg('Lane change detected')现在 , 我们可以使用Tkinter来创建一个简单的弹出窗口来警告变化 , 而不仅仅是打印变化的检测结果 。
if(round(rect[2],2))<-45:popupmsg('Lane change detected')def popupmsg(msg):popup = tk.Tk()popup.wm_title("Message")label = ttk.Label(popup, text=msg, font=NORM_FONT)label.pack(side="top", fill="x", pady=10)B1 = ttk.Button(popup, text="Okay", command = popup.destroy)B1.pack()popup.mainloop()
文章插图
在车架上画矩形 , 用绿线测量角度
文章插图
文章插图
6.总结和未来在本教程中 , 将使用车道变化检测方法探索智能汽车导航的一个小演示 。
计算机视觉正在迅速发展 , 它的应用不仅在汽车的局部导航 , 而且在火星上的导航和产品检测领域也在进步 , 甚至在医学应用中也在开发和用于早期在X射线图像中检测癌症和肿瘤 。
单击此处获取GitHub帐户的源代码:
参考文献
- Bradski, Gary and Kaehler, Adrian, Learning OpenCV: Computer Vision in C++ with the OpenCV Library, O’Reilly Media, Inc., 2nd edition, 2013, @10.5555/2523356, ISBN — 1449314651.
- Laganiere, Robert, OpenCV Computer Vision Application Programming Cookbook, Packt Publishing, 2nd edition, 2014, @10.5555/2692691, ISBN — 1782161481.
- 智能手机市场|华为再拿第一!27%的份额领跑全行业,苹果8%排在第四名!
- 会员|美容院使用会员管理软件给顾客更好的消费体验!
- 行业|现在行业内客服托管费用是怎么算的
- 人民币|天猫国际新增“服务大类”,知舟集团提醒入驻这些类目的要注意
- 国外|坐拥77件专利,打破国外的垄断,造出中国最先进的家电芯片
- 技术|做“视频”绿厂是专业的,这项技术获人民日报评论点赞
- 面临|“熟悉的陌生人”不该被边缘化
- 车企|华为不造车!但任正非加了一个有效期,3年
- 中国|浅谈5G移动通信技术的前世和今生
- 页面|如何简单、快速制作流程图?上班族的画图技巧get
