基本思路

斑马线检测通过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)

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

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)

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

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

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后完整结果(如下图所示)

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 = contoutsfor 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图像处理实现对斑马线的检测(最简单的方法!!!几十行代码搞定!!!)相关推荐

  1. cv2 python 获取斑马线_基于python的opencv图像处理实现对斑马线的检测示例

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

  2. Python图像处理之十行代码搞定圆型头像生成

    1 引言 最近有小伙伴咨询怎么用python来制作一个好看的圆形头像,如下所示的效果:左侧为原图,右侧为我们圆形头像生成图. 自从学了python来做图像处理,这种简单图像处理使用10行代码即可搞定. ...

  3. python语音转文字源码_【python3】Python十行代码搞定文字转语音

    都是copy的百度SDK文档,简单说说怎么用. 1.没安装Python的参见此文:Python学习笔记系列 1 --安装调试Python开发软件 2.win+r输入cmd打开命令行,输入:pip in ...

  4. python哪个文字转语音好用_【python3】Python十行代码搞定文字转语音

    都是copy的百度SDK文档,简单说说怎么用. 1.没安装Python的参见此文:Python学习笔记系列 1 --安装调试Python开发软件 2.win+r输入cmd打开命令行,输入:pip in ...

  5. 基于Python利用OpenCV实现Hough变换的形状检测

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 今天我们将学习如何借助霍夫变换技术来检测图像中的直线和圆. 什么是 ...

  6. 基于python3的Opencv图像处理教程(从零到实践)(贾志刚)pdf笔记、代码

    课件+网上找的相关知识讲解+代码+代码注释 百度网盘 链接:https://pan.baidu.com/s/1Vg4Ir53u4OriNiwFjE9ucQ 提取码:nbyl 链接若失效请评论!!!

  7. 基于Python通过OpenCV实现的口罩识别系统理论篇

    基于Python通过OpenCV实现的口罩识别系统理论设计篇 一.项目实现环境 基于Python 3.8.1版本 opencv-python 4.2.0.34版本 需要自己下载OpenCV的库文件,添 ...

  8. ubuntu16.04安装python.h_ubuntu16.04 下基于 Python 的 OpenCV 的安装

    ubuntu16.04 下基于 Python 的 OpenCV 的安装 这几天一直在学习基于 Python 的 OpenCV , 开发环境是在 Ubuntu16.04 下, 学习的心得就是基于 Pyt ...

  9. 基于python和Opencv将多张图片结合为一张图片的办法

    基于python和Opencv将多张图片结合为一张图片的办法 需要用到的python包 代码本体 这两天写结课论文,需要做一个好看一点的图,要把多张图片结合为同一张图片,本来想用ps,但是懒,干脆用代 ...

最新文章

  1. apple个人开发者证书无线发布app的实现(转)
  2. C#异步编程的实现方式(1)——异步委托
  3. 端口---汇编学习笔记
  4. CSS3动画 - 心脏跳动
  5. 数组——询问学号(洛谷 P3156)
  6. C语言SetConsoleCursorPosition()函数来定位光标位置
  7. nginx post请求超时_Nginx 的超时 timeout 配置详解
  8. asp.net如何取得客户端控件的值
  9. excel服务器2010网站,勤哲Excel服务器2010企业版(完整安装包)
  10. 如何有效挖掘客户需求
  11. 公平的错觉:韩国教育辛酸史
  12. [精简]托福核心词汇62
  13. 《构建之法》CH5~6读书笔记 PB16110698 第九周(~5.15)
  14. 【毕业设计】大数据 电影数据分析与可视化系统 - python Django 大数据 可视化
  15. [转载] 【冬瓜哥手绘雄文】集群文件系统架构演变终极深度梳理图解
  16. 基于拉丁超立方抽样与自适应策略的改进鲸鱼优化算法
  17. 眼镜计算机检查,电脑验光
  18. ios App支付宝开放平台申请支付宝支付具体步骤
  19. C语言程序设计教程习题和答案-C语言期末复习必看资料
  20. 单电源运放滤波器设计

热门文章

  1. 暴力破解FTP服务器用户名密码
  2. AI Benchmark V5 tflite 测试模型
  3. 速度与兼容性功能大比拼:7款浏览器测评,哪一款更好用
  4. 改变radio默认选中颜色
  5. Redis 常见问题
  6. copilot插件使用介绍
  7. 大仲村镇概况-我的家乡
  8. 《花开半夏》--2 消息,魏如风(2)
  9. location在php中什么意思,location是什么意思
  10. 安装nodejs和npm和tldr