OpenCV-Python读取视频,识别物体

前言

打球的时候,我们常常要用眼睛去识别球的位置,确定球的落点和轨迹。用摄像头和视频捕捉物体的位置,确定中心坐标,绘制轮廓边框,就成为了基于Python的OpenCV(Opencv for Python)要处理的重要问题。

思路

1.获取原视频

cap=cv2.VideoCapture('ballsvideo.mp4')#获取原视频
cv2.namedWindow('processed_video', cv2.WINDOW_NORMAL)  #创建一个可调整大小的窗口
cv2.resizeWindow('processed_video', 500, 800)#设置窗口宽度为500,高度为800

2.逐帧读取原视频

while True:
    ret,frame=cap.read()#读取原视频每帧
    if not ret:#直到视频没有下一帧了才结束
        break
    processed_frame=process(frame)#处理每帧
    cv2.imshow('processed_video',processed_frame)#逐帧播放新视频
    if cv2.waitKey(1) & 0xFF == ord('q'):#按q键退出视频播放
        break

3.逐帧处理

把RGB图像转变成HSV图像
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

在利用OpenCV进行颜色识别时,通常会将图像从RGB(红绿蓝)颜色空间转换到HSV(色调、饱和度、亮度)颜色空间。

HSV颜色空间能够更好地分离颜色信息(通过色调Hue),而RGB颜色空间中的颜色信息是分散在三个通道中的。在HSV空间中,色调(H)通道表示颜色,而饱和度(S)和亮度(V)通道表示颜色的强度和亮度,这使得颜色分析和识别更为简单直接。而且HSV颜色空间对光照变化具有较好的稳定性。在RGB空间中,光照变化会影响R、G和B三个通道的值,而在HSV空间中,光照变化主要影响V通道的值,而H通道(颜色)的值相对稳定。

颜色掩码区分颜色
#颜色掩码
#绿色掩码
lower_green, upper_green = numpy.array([35, 50, 50]), numpy.array([85, 255, 255])
green_mask = cv2.inRange(hsv, lower_green, upper_green)
#红色掩码
#红色在hsv颜色
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值