基于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基于二分查找实现求整数平方根的方法
May 12 Python
pygame 精灵的行走及二段跳的实现方法(必看篇)
Jul 10 Python
Python 错误和异常代码详解
Jan 29 Python
python实现简单淘宝秒杀功能
May 03 Python
python matplotlib 在指定的两个点之间连线方法
May 25 Python
Python RabbitMQ消息队列实现rpc
May 30 Python
利用django-suit模板添加自定义的菜单、页面及设置访问权限
Jul 13 Python
python 3.6.2 安装配置方法图文教程
Sep 18 Python
选择Python写网络爬虫的优势和理由
Jul 07 Python
python垃圾回收机制(GC)原理解析
Dec 30 Python
基于python连接oracle导并出数据文件
Apr 28 Python
OpenCV绘制圆端矩形的示例代码
Aug 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代码
2016/07/20 PHP
laravel5.1框架model类查询的实现方法
2019/10/08 PHP
ie focus bug 解决方法
2009/09/03 Javascript
JS代码同步文本框内容的实例方法
2013/07/12 Javascript
再谈JavaScript异步编程
2016/01/27 Javascript
jQuery页面元素动态添加后绑定事件丢失方法,非 live
2016/06/16 Javascript
jQuery手指滑动轮播效果
2016/12/22 Javascript
详解如何使用vue-cli脚手架搭建Vue.js项目
2017/05/19 Javascript
VSCode 配置React Native开发环境的方法
2017/12/27 Javascript
javascript标准库(js的标准内置对象)总结
2018/05/26 Javascript
利用JS实现一个同Excel表现的智能填充算法
2018/08/13 Javascript
浅谈让你的代码更简短,更整洁,更易读的ES6小技巧
2018/10/25 Javascript
了解前端理论:rscss和rsjs
2019/05/23 Javascript
用vite搭建vue3应用的实现方法
2021/02/22 Vue.js
[01:00:49]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第二场 1月31日
2021/03/11 DOTA
python实现挑选出来100以内的质数
2015/03/24 Python
python根据出生日期返回年龄的方法
2015/03/26 Python
Python进度条实时显示处理进度的示例代码
2018/01/30 Python
使用matplotlib中scatter方法画散点图
2019/03/19 Python
详解python配置虚拟环境
2019/04/08 Python
python3.7实现云之讯、聚合短信平台的短信发送功能
2019/09/26 Python
python实现批量处理将图片粘贴到另一张图片上并保存
2019/12/12 Python
Python绘图实现台风路径可视化代码实例
2020/10/23 Python
python 实现aes256加密
2020/11/27 Python
管理学专业个人求职信范文
2013/09/21 职场文书
模具设计与制造专业应届生求职信
2013/10/18 职场文书
市场营销职业生涯规划书范文
2014/01/12 职场文书
四风问题对照检查材料
2014/09/22 职场文书
领导班子个人对照检查剖析材料
2014/09/29 职场文书
缓刑人员思想汇报
2014/10/11 职场文书
2016公务员年度考核评语
2015/12/01 职场文书
2016年“世界气象日”广播稿
2015/12/17 职场文书
告诉你一个秘密:富人致富的五大优点
2019/07/11 职场文书
Python连接Postgres/Mysql/Mongo数据库基本操作大全
2021/06/29 Python
MSSQL基本语法操作
2022/04/11 SQL Server
Docker与K8s关系介绍不会Docker也可以使用K8s
2022/06/25 Servers