基于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的keyword模块用法实例分析
Jun 30 Python
打包发布Python模块的方法详解
Sep 18 Python
python实现排序算法解析
Sep 08 Python
python版飞机大战代码分享
Nov 20 Python
pycharm配置pyqt5-tools开发环境的方法步骤
Feb 11 Python
PyQt打开保存对话框的方法和使用详解
Feb 27 Python
python脚本调用iftop 统计业务应用流量的思路详解
Oct 11 Python
Python matplotlib画曲线例题解析
Feb 07 Python
python读写文件write和flush的实现方式
Feb 21 Python
Python 将 QQ 好友头像生成祝福语的实现代码
May 03 Python
Python实现电视里的5毛特效实例代码详解
May 15 Python
详解python内置模块urllib
Sep 09 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
怎样辨别一杯好咖啡
2021/03/03 新手入门
fleaphp下不确定的多条件查询的巧妙解决方法
2008/09/11 PHP
php实现猴子选大王问题算法实例
2015/04/20 PHP
Symfony2框架学习笔记之HTTP Cache用法详解
2016/03/18 PHP
laravel创建类似ThinPHP中functions.php的全局函数
2016/11/26 PHP
用js计算页面执行时间的函数
2006/12/07 Javascript
Ext.MessageBox工具类简介
2009/12/10 Javascript
js监听表单value的修改同步问题,跨浏览器支持
2009/12/31 Javascript
javascript Array对象基础知识小结
2010/11/16 Javascript
jquery列表拖动排列(由项目提取相当好用)
2014/06/17 Javascript
信息页文内画中画广告js实现代码(文中加载广告方式)
2016/01/03 Javascript
js正则表达式replace替换变量方法
2016/05/21 Javascript
郁闷!ionic中获取ng-model绑定的值为undefined如何解决
2016/08/27 Javascript
AngularJs expression详解及简单示例
2016/09/01 Javascript
Javascript实现信息滚动效果
2017/05/18 Javascript
使用微信小程序开发弹出框应用实例详解
2018/10/18 Javascript
vue 实现Web端的定位功能 获取经纬度
2019/08/08 Javascript
vue组件传值的实现方式小结【三种方式】
2020/02/05 Javascript
TypeScript的安装、使用、自动编译的实现
2020/04/10 Javascript
JS实现超级好看的鼠标小尾巴特效
2020/12/01 Javascript
pip 错误unused-command-line-argument-hard-error-in-future解决办法
2014/06/01 Python
python使用reportlab实现图片转换成pdf的方法
2015/05/22 Python
Python内置函数delattr的具体用法
2017/11/23 Python
浅谈django model postgres的json字段编码问题
2018/01/05 Python
python 定义n个变量方法 (变量声明自动化)
2018/11/10 Python
Matplotlib绘制雷达图和三维图的示例代码
2020/01/07 Python
Python利用PyPDF2库获取PDF文件总页码实例
2020/04/03 Python
基于python实现获取网页图片过程解析
2020/05/11 Python
HTML5 canvas画矩形时出现边框样式不一致的解决方法
2013/10/14 HTML / CSS
Dune London官网:英国著名奢华鞋履品牌
2017/11/30 全球购物
园林设计师自荐信
2013/11/18 职场文书
模具设计与制造专业推荐信
2014/02/16 职场文书
毕业实习计划书
2015/01/16 职场文书
迎新生晚会主持词
2015/06/30 职场文书
金榜题名主持词
2015/07/02 职场文书
导游词之上海杜莎夫人蜡像馆
2019/11/22 职场文书