基于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在linux中输出带颜色的文字的方法
Jun 19 Python
Python实现提取谷歌音乐搜索结果的方法
Jul 10 Python
Python中set与frozenset方法和区别详解
May 23 Python
python使用os.listdir和os.walk获得文件的路径的方法
Dec 16 Python
selenium+python实现自动登录脚本
Apr 22 Python
Python使用正则表达式分割字符串的实现方法
Jul 16 Python
python 默认参数相关知识详解
Sep 18 Python
python 实现将小图片放到另一个较大的白色或黑色背景图片中
Dec 12 Python
Python如何基于rsa模块实现非对称加密与解密
Jan 03 Python
TensorFlow固化模型的实现操作
May 26 Python
python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解
Dec 22 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 fsockopen解决办法 php实现多线程
2014/01/20 PHP
php使用MySQL保存session会话的方法
2015/06/18 PHP
PHP爬虫之百万级别知乎用户数据爬取与分析
2016/01/22 PHP
PHP chunk_split()函数讲解
2019/02/12 PHP
Yii框架布局文件的动态切换操作示例
2019/11/11 PHP
jquery ajax 登录验证实现代码
2009/09/23 Javascript
Node.js:Windows7下搭建的Node.js服务(来玩玩服务器端的javascript吧,这可不是前端js插件)
2011/06/27 Javascript
jquery密码强度校验
2015/12/02 Javascript
浅谈jQuery 选择器和dom操作
2016/06/07 Javascript
老生常谈Javascript中的原型和this指针
2016/10/09 Javascript
jQuery实现的背景颜色渐变动画效果示例
2017/03/24 jQuery
详解Angular-ui-BootStrap组件的解释以及使用
2018/07/13 Javascript
使用 electron 实现类似新版 QQ 的登录界面效果(阴影、背景动画、窗体3D翻转)
2018/10/23 Javascript
jQuery操作cookie的示例代码
2019/06/05 jQuery
使用webpack搭建vue项目及注意事项
2019/06/10 Javascript
js实现聊天对话框
2020/02/08 Javascript
微信小程序 wx:for 与 wx:for-items 与 wx:key的正确用法
2020/05/19 Javascript
Python中使用Inotify监控文件实例
2015/02/14 Python
基于Python实现的ID3决策树功能示例
2018/01/02 Python
python tkinter窗口最大化的实现
2019/07/15 Python
python文件和文件夹复制函数
2020/02/07 Python
Python如何实现远程方法调用
2020/08/07 Python
施华洛世奇巴西官网:SWAROVSKI巴西
2019/12/03 全球购物
应用服务器有那些
2012/01/19 面试题
杭州SQL浙江浙大网新恩普软件有限公司
2013/07/27 面试题
汽车检测与维修个人求职信
2013/09/24 职场文书
自荐信格式简述
2014/01/25 职场文书
银行开业庆典方案
2014/02/06 职场文书
项目建议书格式
2014/03/12 职场文书
董事长秘书工作职责
2014/06/10 职场文书
多媒体教室标语
2014/06/26 职场文书
恋恋笔记本观后感
2015/06/16 职场文书
快消品行业营销模式与盈利模式分享
2019/09/27 职场文书
教你怎么用python爬取爱奇艺热门电影
2021/05/20 Python
Nginx 安装SSL证书完成HTTPS部署
2022/04/28 Servers
Nginx限流和黑名单配置
2022/05/20 Servers