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 中文乱码问题深入分析
Mar 13 Python
python中sleep函数用法实例分析
Apr 29 Python
Python的dict字典结构操作方法学习笔记
May 07 Python
python求质数的3种方法
Sep 28 Python
python整小时 整天时间戳获取算法示例
Feb 20 Python
django和vue实现数据交互的方法
Aug 21 Python
Pycharm操作Git及GitHub的步骤详解
Oct 27 Python
python基于爬虫+django,打造个性化API接口
Jan 21 Python
python抢购软件/插件/脚本附完整源码
Mar 04 Python
python基础详解之if循环语句
Apr 24 Python
pandas进行数据输入和输出的方法详解
Mar 23 Python
Python OpenCV实现图形检测示例详解
Apr 08 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入门基础之php代码写法
2011/12/30 PHP
php实现自定义中奖项数和概率的抽奖函数示例
2017/05/26 PHP
PHP实现的简单在线计算器功能示例
2017/08/02 PHP
一些主流JS框架中DOMReady事件的实现小结
2011/02/12 Javascript
Angular用来控制元素的展示与否的原生指令介绍
2015/01/07 Javascript
jQuery实现DIV层淡入淡出拖动特效的方法
2015/02/13 Javascript
jsMind通过鼠标拖拽的方式调整节点位置
2015/04/13 Javascript
javascript递归回溯法解八皇后问题
2015/04/22 Javascript
简单解析JavaScript中的__proto__属性
2016/05/10 Javascript
分享javascript实现的冒泡排序代码并优化
2016/06/05 Javascript
JavaScript数据存储 Cookie篇
2016/07/02 Javascript
jQuery控制控件文本的长度的操作方法
2016/12/05 Javascript
BootStrap组件之进度条的基本用法
2017/01/19 Javascript
js oncontextmenu事件使用详解
2017/03/25 Javascript
基于zepto.js实现手机相册功能
2017/07/11 Javascript
Javascript Promise用法详解
2018/05/10 Javascript
解决Vue.js由于延时显示了{{message}}引用界面的问题
2018/08/25 Javascript
解决vue无法设置滚动位置的问题
2018/10/07 Javascript
JavaScript写个贪吃蛇小游戏(超详细)
2020/03/17 Javascript
Vue实现购物车实例代码两则
2020/05/30 Javascript
小程序实现上传视频功能
2020/08/18 Javascript
[02:06]DOTA2英雄基础教程 暗影萨满
2013/12/16 DOTA
Python程序员面试题 你必须提前准备!(答案及解析)
2018/01/23 Python
Python对excel文档的操作方法详解
2018/12/10 Python
对python pandas读取剪贴板内容的方法详解
2019/01/24 Python
Python中时间datetime的处理与转换用法总结
2019/02/18 Python
Python实现根据日期获取当天凌晨时间戳的方法示例
2019/04/09 Python
python3通过qq邮箱发送邮件以及附件
2020/05/20 Python
Python模拟登录requests.Session应用详解
2020/11/17 Python
世界上最大的罕见唱片、CD和音乐纪念品网上商店:991.com
2018/05/03 全球购物
美国宠物护理专家:Revival Animal Health
2020/01/05 全球购物
澳大利亚在线购买葡萄酒:The Wine Collective
2020/02/20 全球购物
java程序员面试交流
2012/11/29 面试题
消防安全责任书范本
2014/04/15 职场文书
三八红旗手先进事迹材料(2016推荐版)
2016/02/25 职场文书
golang生成vcf通讯录格式文件详情
2022/03/25 Golang