基于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 getopt 参数处理小示例
Jun 09 Python
Python xlrd读取excel日期类型的2种方法
Apr 28 Python
python模拟enum枚举类型的方法小结
Apr 30 Python
Python中利用xpath解析HTML的方法
May 14 Python
python将.ppm格式图片转换成.jpg格式文件的方法
Oct 27 Python
对python3新增的byte类型详解
Dec 04 Python
Pytorch中Tensor与各种图像格式的相互转化详解
Dec 26 Python
python解析多层json操作示例
Dec 30 Python
python 判断txt每行内容中是否包含子串并重新写入保存的实例
Mar 12 Python
Python文本文件的合并操作方法代码实例
Mar 31 Python
Python3 requests模块如何模仿浏览器及代理
Jun 15 Python
Django URL参数Template反向解析
Nov 24 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
德生S2000南麂列岛台湾FM收听记录
2021/03/02 无线电
PHP通过CURL实现定时任务的图片抓取功能示例
2016/10/03 PHP
php使用Jpgraph创建折线图效果示例
2017/02/15 PHP
经验几则 推荐
2006/09/05 Javascript
javascript 短路法代码精简
2009/08/20 Javascript
jQuery之日期选择器的深入解析
2013/06/19 Javascript
JS阻止用户多次提交示例代码
2014/03/26 Javascript
javascript父子页面通讯实例详解
2015/07/17 Javascript
bootstrap-treeview自定义双击事件实现方法
2016/01/09 Javascript
基于javascript编写简单日历
2016/05/02 Javascript
微信小程序 Video API实例详解
2016/10/02 Javascript
jquery购物车结算功能实现方法
2020/10/29 Javascript
windows 下安装nodejs 环境变量设置
2017/02/02 NodeJs
jQuery实现图片滑动效果
2017/03/08 Javascript
javascript中的面向对象
2017/03/30 Javascript
基于Vue实现后台系统权限控制的示例代码
2017/08/29 Javascript
vue+element tabs选项卡分页效果
2020/06/29 Javascript
Python获取DLL和EXE文件版本号的方法
2015/03/10 Python
Django的数据模型访问多对多键值的方法
2015/07/21 Python
Python文件的读写和异常代码示例
2017/10/31 Python
pygame游戏之旅 添加键盘按键的方法
2018/11/20 Python
pyqt5 键盘监听按下enter 就登陆的实例
2019/06/25 Python
Python facenet进行人脸识别测试过程解析
2019/08/16 Python
wxpython绘制音频效果
2019/11/18 Python
Python操作MySQL数据库实例详解【安装、连接、增删改查等】
2020/01/17 Python
Python如何把十进制数转换成ip地址
2020/05/25 Python
详解移动端Html5页面中1px边框的几种解决方法
2018/07/24 HTML / CSS
当当网官方旗舰店:中国图书销售夺金品牌
2018/04/02 全球购物
日本即尚网:JSHOPPERS.com(支持中文)
2019/12/03 全球购物
干部现实表现材料
2014/02/13 职场文书
司法所长先进事迹
2014/06/02 职场文书
2014预备党员党课学习心得范文
2014/07/08 职场文书
法定代表人授权委托书范文
2014/09/22 职场文书
涨价通知怎么写
2015/04/23 职场文书
Python机器学习三大件之一numpy
2021/05/10 Python
MySQL去除密码登录告警的方法
2022/04/20 MySQL