基于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使用pymysql小技巧
Jun 04 Python
Python常见工厂函数用法示例
Mar 21 Python
python使用循环打印所有三位数水仙花数的实例
Nov 13 Python
详解Python用户登录接口的方法
Apr 17 Python
django框架CSRF防护原理与用法分析
Jul 22 Python
Python传递参数的多种方式(小结)
Sep 18 Python
pygame实现非图片按钮效果
Oct 29 Python
pygame库实现俄罗斯方块小游戏
Oct 29 Python
python实现按首字母分类查找功能
Oct 31 Python
Python爬虫实例——爬取美团美食数据
Jul 15 Python
Pyqt助手安装PyQt5帮助文档过程图解
Nov 20 Python
Python将CSV文件转化为HTML文件的操作方法
Jun 30 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面向对象之旅:深入理解static变量与方法
2014/01/06 PHP
Yii框架表单模型和验证用法
2016/05/20 PHP
js小技巧--自动隐藏红叉叉
2007/08/13 Javascript
JavaScript基本概念初级讲解论坛贴的学习记录
2009/02/22 Javascript
实例解析jQuery插件EasyUI最常用的表单验证规则
2015/11/29 Javascript
jquery.zclip轻量级复制失效问题
2017/01/08 Javascript
js return返回多个值,通过对象的属性访问方法
2017/02/21 Javascript
vue移动端屏幕适配详解
2019/04/30 Javascript
js实现滑动滑块验证登录
2020/07/24 Javascript
浅析JavaScript 函数柯里化
2020/09/08 Javascript
VUE 项目在IE11白屏报错 SCRIPT1002: 语法错误的解决
2020/09/27 Javascript
解决vue打包报错Unexpected token: punc的问题
2020/10/24 Javascript
[14:20]刀塔大凶女神互压各路奇葩屌丝
2014/05/16 DOTA
Python3中使用PyMongo的方法详解
2017/07/28 Python
使用python对文件中的数值进行累加的实例
2018/11/28 Python
python爬取微信公众号文章的方法
2019/02/26 Python
获取django框架orm query执行的sql语句实现方法分析
2019/06/20 Python
python区块及区块链的开发详解
2019/07/03 Python
Django 路由控制的实现
2019/07/17 Python
Python中注释(多行注释和单行注释)的用法实例
2019/08/28 Python
Django使用Celery加redis执行异步任务的实例内容
2020/02/20 Python
Python爬虫教程知识点总结
2020/10/19 Python
python调用jenkinsAPI构建jenkins,并传递参数的示例
2020/12/09 Python
css3实现信纸/同学录效果的示例代码
2018/12/11 HTML / CSS
HTML5如何实现元素拖拽
2016/03/11 HTML / CSS
HTML5 body设置自适应全屏
2020/05/07 HTML / CSS
海外淘书首选:AbeBooks
2017/07/31 全球购物
美国男士西装打折店:Jos. A. Bank
2017/11/13 全球购物
Lookfantastic香港官网:英国知名美妆购物网站
2018/06/19 全球购物
舞会礼服和舞会鞋:PromGirl
2019/04/22 全球购物
高中学校对照检查材料
2014/08/31 职场文书
科级干部群众路线教育实践活动个人对照检查材料
2014/09/19 职场文书
一个都不能少观后感
2015/06/04 职场文书
情感电台广播稿
2015/08/18 职场文书
商务信函英语问候语
2015/11/10 职场文书
Redis做数据持久化的解决方案及底层原理
2021/07/15 Redis