基于python的opencv图像处理实现对斑马线的检测示例


Posted in Python onNovember 29, 2020

基本思路

斑马线检测通过opencv图像处理来进行灰度值转换、高斯滤波去噪、阈值处理、腐蚀和膨胀后对图像进行轮廓检测,通过判断车辆和行人的位置,以及他们之间的距离信息,当车速到超过一定阈值时并且与行人距离较近时,则会被判定车辆为未礼让行人。

基于python的opencv图像处理实现对斑马线的检测示例

结果示例

基于python的opencv图像处理实现对斑马线的检测示例

实验流程

先通过视频截取一张图片来进行测试,如果结果满意之后再嵌套到视频中,从而达到想要的效果。

1.预处理(灰度值转换、高斯滤波去噪、阈值处理、腐蚀和膨胀)> 根据自己的需求来修改一些值

#灰度值转换
imgGray = cv2.cvtColor(copy_img,cv2.COLOR_BGR2GRAY)
#高斯滤波去噪
imgBlur = cv2.GaussianBlur(imgGray,(5,5),0)
#阈值处理
ret,thresh = cv2.threshold(imgBlur,127,255,cv2.THRESH_BINARY)
#腐蚀
imgEro = cv2.erode(thresh,kernel1,iterations=2)
#膨胀
imgDia = cv2.dilate(imgEro,kernel2,iterations=4)

预处理之后(如下图所示):

基于python的opencv图像处理实现对斑马线的检测示例

2.轮廓检测

#轮廓检测
_,contouts,hie = cv2.findContours(imgDia,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)
cnt = contouts
cv2.drawContours(copy_img, cnt, -1, (0, 255, 0), 2)

全部的轮廓(如下图所示)

基于python的opencv图像处理实现对斑马线的检测示例

可以看到这并不是我们想要的,所以我们需要判断一下位置,选取我们感兴趣的区域。

3.感兴趣区域

根据自己图片或视频的需求来更改x,y,w,h位置信息数值。

for i in cnt:
  #坐标赋值
  x,y,w,h = cv2.boundingRect(i)
  #roi位置判断
  if y>350 and y<450 and x<1200 and w>50 and h>10:
    # 画出轮廓
    cv2.drawContours(copy_img, i, -1, (0, 255, 0), 2)

获取roi后完整结果(如下图所示)

基于python的opencv图像处理实现对斑马线的检测示例

4.完整代码

import cv2
import numpy as np
#定义两个核	(kernel_Ero用于腐蚀,kernel_Dia用于膨胀)
kernel_Ero = np.ones((3,1),np.uint8)
kernel_Dia = np.ones((3,5),np.uint8)

img = cv2.imread("../images/bmx.png")
copy_img = img.copy()
#原图copy修改尺寸
copy_img = cv2.resize(copy_img,(1600,800))
#灰度值转换
imgGray = cv2.cvtColor(copy_img,cv2.COLOR_BGR2GRAY)
#高斯滤波去噪
imgBlur = cv2.GaussianBlur(imgGray,(5,5),0)
#阈值处理
ret,thresh = cv2.threshold(imgBlur,127,255,cv2.THRESH_BINARY)
#腐蚀
imgEro = cv2.erode(thresh,kernel_Ero,iterations=2)
#膨胀
imgDia = cv2.dilate(imgEro,kernel_Dia,iterations=4)

#轮廓检测
_,contouts,hie = cv2.findContours(imgDia,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)
cnt = contouts

for i in cnt:
  #坐标赋值
  x,y,w,h = cv2.boundingRect(i)
  #roi位置判断
  if y>350 and y<450 and x<1200 and w>50 and h>10:
    # 画出轮廓
    cv2.drawContours(copy_img, i, -1, (0, 255, 0), 2)

cv2.imshow("img",copy_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

总结

在业务需求中这种流程做出来的结果并不可行,只不过是把想要的东西框了出来,但是如果想要对交通场景判别机动车是否礼让行人行为的话则需要对坐标进行判断,可以通过从第一个斑马线的坐标到最后一个斑马线的坐标(横向)来画出一个大的矩形框(roi区域),然后根据这个矩形框的坐标来对机动车(已有坐标)坐标来进行行为判断,从而达到需求。

最后!!!

第一次接触opencv!所以请各位视觉领域的大佬们勿喷我这个小菜鸡!(/狗头)

代码量非常少,无泛化能力,很low的一种做法。。。不过对于小白的我来说学习opencv还是很有帮助滴!干就完了!奥利给!

到此这篇关于基于python的opencv图像处理实现对斑马线的检测示例的文章就介绍到这了,更多相关opencv 斑马线检测内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python BeautifulSoup设置页面编码的方法
Apr 03 Python
Python Socket传输文件示例
Jan 16 Python
Python元组操作实例分析【创建、赋值、更新、删除等】
Jul 24 Python
Python列表删除的三种方法代码分享
Oct 31 Python
Python学习pygal绘制线图代码分享
Dec 09 Python
浅析Python数据处理
May 02 Python
Python利用公共键如何对字典列表进行排序详解
May 19 Python
python设置环境变量的作用和实例
Jul 09 Python
Python3 列表,数组,矩阵的相互转换的方法示例
Aug 05 Python
python函数声明和调用定义及原理详解
Dec 02 Python
简单了解Python多态与属性运行原理
Jun 15 Python
零基础小白多久能学会python
Jun 22 Python
python3实现名片管理系统(控制台版)
Nov 29 #Python
python3实现简单飞机大战
Nov 29 #Python
Python基于Socket实现简易多人聊天室的示例代码
Nov 29 #Python
python3实现飞机大战
Nov 29 #Python
python之pygame模块实现飞机大战完整代码
Nov 29 #Python
Python使用Pygame绘制时钟
Nov 29 #Python
详解pandas赋值失败问题解决
Nov 29 #Python
You might like
PHP 批量更新网页内容实现代码
2010/01/05 PHP
Laravel框架实现的记录SQL日志功能示例
2018/06/19 PHP
DOM相关内容速查手册
2007/02/07 Javascript
用于节点操作的API,颠覆原生操作HTML DOM节点的API
2010/12/11 Javascript
在JavaScript中获取请求的URL参数[正则]
2010/12/25 Javascript
基于JQUERY的多级联动代码
2012/01/24 Javascript
JQuery插件ajaxfileupload.js异步上传文件实例
2015/05/19 Javascript
JS查找字符串中出现次数最多的字符
2016/09/05 Javascript
javascript使用 concat 方法对数组进行合并的方法
2016/09/08 Javascript
javascript 作用于作用域链的详解
2017/09/27 Javascript
一个手写的vue放大镜效果
2019/08/09 Javascript
vue内置组件component--通过is属性动态渲染组件操作
2020/07/28 Javascript
JSON 入门教程基础篇 json入门学习笔记
2020/09/22 Javascript
OpenLayers实现图层切换控件
2020/09/25 Javascript
前端 javascript 实现文件下载的示例
2020/11/24 Javascript
[02:17]2016国际邀请赛中国区预选赛VG战队领队采访
2016/06/26 DOTA
python字典序问题实例
2014/09/26 Python
利用Tkinter和matplotlib两种方式画饼状图的实例
2017/11/06 Python
利用python如何处理百万条数据(适用java新手)
2018/06/06 Python
详解python校验SQL脚本命名规则
2019/03/22 Python
介绍一款python类型检查工具pyright(推荐)
2019/07/03 Python
pandas的to_datetime时间转换使用及学习心得
2019/08/11 Python
Python基于stuck实现scoket文件传输
2020/04/02 Python
Jupyter Notebook输出矢量图实例
2020/04/14 Python
基于selenium及python实现下拉选项定位select
2020/07/22 Python
Python 中如何写注释
2020/08/28 Python
Python利用pip安装tar.gz格式的离线资源包
2020/09/14 Python
描述JSP和Servlet的区别、共同点、各自应用的范围
2012/10/02 面试题
行政人员岗位职责
2013/12/08 职场文书
经济管理专业自荐信
2013/12/30 职场文书
公司门卫管理制度
2014/02/01 职场文书
《玩具柜台前的孩子》教学反思
2014/02/13 职场文书
吃空饷专项治理工作实施方案
2014/03/04 职场文书
助人为乐模范事迹材料
2014/06/02 职场文书
Python趣味爬虫之用Python实现智慧校园一键评教
2021/05/28 Python
python三子棋游戏
2022/05/04 Python