50行Python代码实现视频中物体颜色识别和跟踪

前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

作者: 机器学习与统计学

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

http://note.youdao.com/noteshare?id=3054cce4add8a909e784ad934f956cef

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

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

 1 import numpy as np
 2 import cv2
 3 font = cv2.FONT_HERSHEY_SIMPLEX
 4 lower_green = np.array([35, 110, 106])  # 绿色范围低阈值
 5 upper_green = np.array([77, 255, 255])  # 绿色范围高阈值
 6 lower_red = np.array([0, 127, 128])  # 红色范围低阈值
 7 upper_red = np.array([10, 255, 255])  # 红色范围高阈值
 8 #需要更多颜色,可以去百度一下HSV阈值!
 9 # cap = cv2.VideoCapture(‘1.mp4‘)  # 打开视频文件
10 cap = cv2.VideoCapture(0)#打开USB摄像头
11 if (cap.isOpened()):  # 视频打开成功
12     flag = 1
13 else:
14     flag = 0
15 num = 0
16 if (flag):
17     while (True):
18         ret, frame = cap.read()  # 读取一帧
19
20         if ret == False:  # 读取帧失败
21             break
22         hsv_img = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
23         mask_green = cv2.inRange(hsv_img, lower_green, upper_green)  # 根据颜色范围删选
24         mask_red = cv2.inRange(hsv_img, lower_red, upper_red)
25  # 根据颜色范围删选
26         mask_green = cv2.medianBlur(mask_green, 7)  # 中值滤波
27         mask_red = cv2.medianBlur(mask_red, 7)  # 中值滤波
28         mask = cv2.bitwise_or(mask_green, mask_red)
29         mask_green, contours, hierarchy = cv2.findContours(mask_green, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
30         mask_red, contours2, hierarchy2 = cv2.findContours(mask_red, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
31 ?
32         for cnt in contours:
33             (x, y, w, h) = cv2.boundingRect(cnt)
34             cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 255), 2)
35             cv2.putText(frame, "Green", (x, y - 5), font, 0.7, (0, 255, 0), 2)
36 ?
37         for cnt2 in contours2:
38             (x2, y2, w2, h2) = cv2.boundingRect(cnt2)
39             cv2.rectangle(frame, (x2, y2), (x2 + w2, y2 + h2), (0, 255, 255), 2)
40             cv2.putText(frame, "Red", (x2, y2 - 5), font, 0.7, (0, 0, 255), 2)
41         num = num + 1
42         cv2.imshow("dection", frame)
43         cv2.imwrite("imgs/%d.jpg"%num, frame)
44         if cv2.waitKey(20) & 0xFF == 27:
45             break
46 cv2.waitKey(0)
47 cv2.destroyAllWindows()

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

最终的效果图:

.

原文地址:https://www.cnblogs.com/Qqun821460695/p/11989838.html

时间: 2024-08-29 07:15:07

50行Python代码实现视频中物体颜色识别和跟踪的相关文章

基于Tkinter用50行Python代码实现简易计算器

Tkinter一般是python自带的,所以代码不需要其他组件,本程序是在python2.7版本实现的. 主要涉及了tkinter的使用,函数定义和调用,匿名函数的使用,类成员函数定义等python基础知识,适合新手学习. 代码如下: from Tkinter import * #创建横条型框架 def frame(root, side): w = Frame(root) w.pack(side = side, expand = YES, fill = BOTH) return w #创建按钮

50行Python代码构建小型区块链

本文介绍了如何使用python构建一个小型的区块链技术,使用Python2实现,代码不到50行. Although some think blockchain is a solution waiting for problems, there's no doubt that this novel technology is a marvel of computing. But, what exactly is a blockchain?虽然有人认为区块链本身仍有很多问题需要解决,但毫无疑问,这种

50 行Python代码,轻松实现中英文翻译

Python学习交流群:125240963,群内每天分享干货,包括最新的python企业案例学习资料和零基础入门教程,欢迎各位小伙伴入群学习交流 现在的时代,越来越看重英语能力.如果你懂得英语,你会接触到更大的世界,你会发现更多的信息.尤其是对于程序员来说,好的编程资料都是来自英文文档.那些国内的翻译的版本,有很多内容跟原版相差的太多,甚至牛头不对马嘴. 虽然现在有非常多的翻译软件,但通过自己动手写个 python 小程序,是非常的有成就感.甚至你借助今天的代码,也可以自己开发个小型翻译软件.

50 行 Python 代码,带你追到最心爱的人

程序员世纪难题 人们一提到程序员第一反应就是:我知道!他们工资很高啊!但大部分都是单身狗,不懂得幽默风趣,只是每天穿格子 polo 衫的宅男一个.甚至程序员自己也这样形容自己:钱多话少死的早.程序员总是爱这样黑自己.大部分的程序员都是单身这是一个不争的事实,也是程序员一个世纪难题.但程序员并不是大部分都非常的呆板,相反我认知的很多程序员都非常幽默风趣.会利用自己所学的知识,为生活,为自己心爱的人带来一些惊喜. 今天我就教大家如何做一个风趣又不失逼格的 python 程序.利用 python 每天

人脸检测真的不难,50行Python代码就能实现人脸检测

Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以小的给各位看官们准备了高价值Python学习视频教程,都放在了文章结尾,欢迎前来领取! *注意:全文代码可以滑动查看 现在的人脸识别技术已经得到了非常广泛的应用,支付领域.身份验证.美颜相机里都有它的应用.用iPhone的同学们应该对下面的功能比较熟悉. iPhone的照片中有一个"人物"的功能,能够将照片里的人脸识别出来并分类,背后的原理也是人脸识别技术. 这篇文章主要介绍怎样用Python实现人脸检测.人

Python学习:50 行 Python 代码,带你追到最心爱的人

程序员世纪难题 人们一提到程序员第一反应就是:我知道!他们工资很高啊!但大部分都是单身狗,不懂得幽默风趣,只是每天穿格子 polo 衫的宅男一个.甚至程序员自己也这样形容自己:钱多话少死的早.程序员总是爱这样黑自己.大部分的程序员都是单身这是一个不争的事实,也是程序员一个世纪难题.但程序员并不是大部分都非常的呆板,相反我认知的很多程序员都非常幽默风趣.会利用自己所学的知识,为生活,为自己心爱的人带来一些惊喜. 今天我就教大家如何做一个风趣又不失逼格的 python 程序.利用 python 每天

50行python代码实现个代理服务器(你懂的)

之前遇到一个场景是这样的: 我在自己的电脑上需要用mongodb图形客户端,但是mongodb的服务器地址没有对外网开放,只能通过先登录主机A,然后再从A连接mongodb服务器B. 本来想通过ssh端口转发的,但是我没有从机器A连接ssh到B的权限.于是就自己用python写一个. 原理很简单. 1.开一个socket server监听连接请求 2.每接受一个客户端的连接请求,就往要转发的地址建一条连接请求.即client->proxy->forward.proxy既是socket服务端(监

50行python代码实现个代理server(你懂的)

之前遇到一个场景是这种: 我在自己的电脑上须要用mongodb图形client,可是mongodb的server地址没有对外网开放,仅仅能通过先登录主机A,然后再从A连接mongodbserverB. 本来想通过sshport转发的,可是我没有从机器A连接ssh到B的权限.于是就自己用python写一个. 原理非常easy. 1.开一个socket server监听连接请求 2.每接受一个客户端的连接请求,就往要转发的地址建一条连接请求.即client->proxy->forward.prox

vim中注释多行python代码

在vim中注释多行python代码比较麻烦,主要由以下几种方法: (1)将需要注释的代码以文档字符串的形式呈现 (2)将需要注释的代码以函数的形式呈现 (3)使用vim自身快捷键 我们主要使用第三种方式,下面是注释和取消注释的方法. 1.多行注释: 1. 首先按esc进入命令行模式下,按下Ctrl + v,进入列(也叫区块)模式; 2. 在行首使用上下键选择需要注释的多行; 3. 按下键盘(大写)"I"键,进入插入模式: 4. 然后输入注释符("//"."