50行Python代码实现视频中物体颜色识别和跟踪(必须以红色为例)


Posted in Python onNovember 20, 2019

目前计算机视觉(CV)与自然语言处理(NLP)及语音识别并列为人工智能三大热点方向,而计算机视觉中的对象检测(objectdetection)应用非常广泛,比如自动驾驶、视频监控、工业质检、医疗诊断等场景。

50行Python代码实现视频中物体颜色识别和跟踪(必须以红色为例)

目标检测的根本任务就是将图片或者视频中感兴趣的目标提取出来,目标的识别可以基于颜色、纹理、形状。其中颜色属性运用十分广泛,也比较容易实现。下面就向大家分享一个我做的小实验———通过OpenCV的Python接口来实现从视频中进行颜色识别和跟踪。

下面就是我们完整的代码实现(已调试运行):

import numpy as np
import cv2
font = cv2.FONT_HERSHEY_SIMPLEX
lower_green = np.array([35, 110, 106]) # 绿色范围低阈值
upper_green = np.array([77, 255, 255]) # 绿色范围高阈值
lower_red = np.array([0, 127, 128]) # 红色范围低阈值
upper_red = np.array([10, 255, 255]) # 红色范围高阈值
#需要更多颜色,可以去百度一下HSV阈值!
# cap = cv2.VideoCapture('1.mp4') # 打开视频文件
cap = cv2.VideoCapture(0)#打开USB摄像头
if (cap.isOpened()): # 视频打开成功
 flag = 1
else:
 flag = 0
num = 0
if (flag):
 while (True):
 ret, frame = cap.read() # 读取一帧
 
 if ret == False: # 读取帧失败
  break
 hsv_img = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
 mask_green = cv2.inRange(hsv_img, lower_green, upper_green) # 根据颜色范围删选
 mask_red = cv2.inRange(hsv_img, lower_red, upper_red) 
 # 根据颜色范围删选
 mask_green = cv2.medianBlur(mask_green, 7) # 中值滤波
 mask_red = cv2.medianBlur(mask_red, 7) # 中值滤波
 mask = cv2.bitwise_or(mask_green, mask_red)
 mask_green, contours, hierarchy = cv2.findContours(mask_green, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
 mask_red, contours2, hierarchy2 = cv2.findContours(mask_red, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)

 for cnt in contours:
  (x, y, w, h) = cv2.boundingRect(cnt)
  cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 255), 2)
  cv2.putText(frame, "Green", (x, y - 5), font, 0.7, (0, 255, 0), 2)

 for cnt2 in contours2:
  (x2, y2, w2, h2) = cv2.boundingRect(cnt2)
  cv2.rectangle(frame, (x2, y2), (x2 + w2, y2 + h2), (0, 255, 255), 2)
  cv2.putText(frame, "Red", (x2, y2 - 5), font, 0.7, (0, 0, 255), 2)
 num = num + 1
 cv2.imshow("dection", frame)
 cv2.imwrite("imgs/%d.jpg"%num, frame)
 if cv2.waitKey(20) & 0xFF == 27:
  break
cv2.waitKey(0)
cv2.destroyAllWindows()

如图所示,我们将会检测到红色区域

50行Python代码实现视频中物体颜色识别和跟踪(必须以红色为例)

最终的效果图:

50行Python代码实现视频中物体颜色识别和跟踪(必须以红色为例)

总结

以上所述是小编给大家介绍的50行Python代码实现视频中物体颜色识别和跟踪,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python对两个有序列表进行合并和排序的例子
Jun 13 Python
python类继承与子类实例初始化用法分析
Apr 17 Python
深入源码解析Python中的对象与类型
Dec 11 Python
Python爬虫实现全国失信被执行人名单查询功能示例
May 03 Python
对python 匹配字符串开头和结尾的方法详解
Oct 27 Python
python实现K近邻回归,采用等权重和不等权重的方法
Jan 23 Python
python 通过SSHTunnelForwarder隧道连接redis的方法
Feb 19 Python
Python玩转加密的技巧【推荐】
May 13 Python
pandas和spark dataframe互相转换实例详解
Feb 18 Python
python GUI库图形界面开发之PyQt5信号与槽事件处理机制详细介绍与实例解析
Mar 08 Python
python实现进度条的多种实现
Apr 29 Python
解决Python字典查找报Keyerror的问题
May 26 Python
python中必要的名词解释
Nov 20 #Python
python做接口测试的必要性
Nov 20 #Python
使用NumPy读取MNIST数据的实现代码示例
Nov 20 #Python
Python脚本操作Excel实现批量替换功能
Nov 20 #Python
详解Python中的format格式化函数的使用方法
Nov 20 #Python
Python数据分析pandas模块用法实例详解
Nov 20 #Python
Python学习笔记之函数的参数和返回值的使用
Nov 20 #Python
You might like
PHP程序级守护进程的实现与优化的使用概述
2013/05/02 PHP
linux实现php定时执行cron任务详解
2013/12/24 PHP
php时间戳转换的示例
2014/03/31 PHP
javascript 实用的文字链提示框效果
2010/06/30 Javascript
从零开始学习jQuery (八) 插播:jQuery实施方案
2011/02/23 Javascript
html向js方法传递参数具体实现
2013/08/08 Javascript
javascript动态的改变IFrame的高度实现自动伸展
2013/10/12 Javascript
js数组的基本用法及数组根据下标(数值或字符)移除元素
2013/10/20 Javascript
Jquery如何实现点击时高亮显示代码
2014/01/22 Javascript
使用JS取得焦点(focus)元素代码
2014/03/22 Javascript
JavaScript中定义函数的三种方法
2015/03/12 Javascript
微信小程序 网络API Websocket详解
2016/11/09 Javascript
JavaScript中的工厂函数(推荐)
2017/03/08 Javascript
JavaScript实现移动端页面按手机屏幕分辨率自动缩放的最强代码
2017/08/18 Javascript
JS浅拷贝和深拷贝原理与实现方法分析
2019/02/28 Javascript
js实现div色块拖动录制
2020/01/16 Javascript
JS如何实现手机端输入验证码效果
2020/05/13 Javascript
element 动态合并表格的步骤
2020/12/31 Javascript
Vuex实现简单购物车
2021/01/10 Vue.js
vue常用高阶函数及综合实例
2021/02/25 Vue.js
[11:33]DAC2018 4.5SOLO赛决赛 MidOne vs Paparazi第二场
2018/04/06 DOTA
编写Python爬虫抓取豆瓣电影TOP100及用户头像的方法
2016/01/20 Python
特征脸(Eigenface)理论基础之PCA主成分分析法
2018/03/13 Python
基于DataFrame改变列类型的方法
2018/07/25 Python
selenium + python 获取table数据的示例讲解
2018/10/13 Python
Python中extend和append的区别讲解
2019/01/24 Python
Python下简易的单例模式详解
2019/04/08 Python
python+opencv3生成一个自定义纯色图教程
2020/02/19 Python
实现CSS3中的border-radius(边框圆角)示例代码
2013/07/19 HTML / CSS
size?荷兰官方网站:英国高级运动鞋精品店
2020/07/24 全球购物
小学生自我鉴定
2013/10/12 职场文书
同学会主持词
2014/03/18 职场文书
学员自我鉴定
2014/03/19 职场文书
乡镇平安建设汇报材料
2014/08/25 职场文书
2015年新学期寄语
2015/02/26 职场文书
vue项目两种方式实现竖向表格的思路分析
2021/04/28 Vue.js