【openCV学习】3.视频截取

1.一些新的API

cv2.VideoCapture()

例子:

cap = cv.VideoCapture("vedio/lp.mp4")

cap = cv.VideoCapture(0)

VideoCapture是一个类,调用其构造函数创建一个视频截取器,只有一个参数,有两种类型,一种是字符串类型,代表视频的路径。一种是int类型,代表电脑上连接的摄像头的设备号。

创建这么一个对象cap之后,可以调用其read()函数来截取这一帧的图片。并指向下一帧等待下一次截取

videocapture.read()

例子:

ret,frame = cap.read()

read函数是VideoCapture类所创建的对象包含的函数,它有两个返回值,其中ret是一个bool类型的变量,表示是否成功获取这一帧的图片。frame是一个多维矩阵,代表的是这张图片。

videocapture.inOpened()

例子:

while cap.isOpened():

返回bool值,代表这个videocapture是否成功打开视频或者摄像头。由于videocapture没能成功打开视频或者调用摄像头的时候,python并不会报错,因此可以用这个api来查看。

2.完整代码:

import cv2 as cv

#创建并且resize窗口,用来显示视频
cv.namedWindow('video',cv.WINDOW_NORMAL)
cv.resizeWindow("video",640,480)
#如果是单纯的数字,就是调用电脑上连接的第几个摄像头
"""
cap = cv.VideoCapture(0)#cap相当于一个视频的图片截取器,需要一帧一帧的截取图片,然后放到cv2的窗口上去imshow它
"""
#如果是路径,就读取的是视频
cap = cv.VideoCapture("vedio/lp.mp4")
#如果没成功打开,不会报错,因此会用下面这个函数来检验是否成功打开
#循环截取每一帧数据
while cap.isOpened():
    ret,frame = cap.read()#read会返回两个值,一个是bool类型,表示是否读取成功,另一个就是截取到的这张图片
    if ret == False:
        break
    else:
        cv.imshow('video',frame)
        if cv.waitKey(33) == ord('q'):#如果键盘输入q,就退出循环,同时也实现了延时的功能,可以每隔33ms进入下一次循环,读取下一帧
            #一般延迟多少毫秒根据所需要的视频帧率来设置
            break;
#释放视频截取器
cap.release()
#销毁窗口
cv.destroyAllWindows()

 

功能:打开对应的视频或者摄像头,投放到openCV创建的窗口上

OpenCV是一个开源的计算机视觉和机器学习软件库,它提供了丰富的图像处理视频分析功能。在使用OpenCV进行摄像头视频图像截取时,通常的流程包括打开摄像头、捕获视频帧、处理帧(如截取特定区域的图像),最后显示或保存截取的图像。下面是使用Python语言和OpenCV库进行视频图像截取的一个基本示例: 1. 导入OpenCV库。 2. 使用`cv2.VideoCapture()`打开摄像头设备。 3. 通过循环读取每一帧图像。 4. 对读取的帧进行处理,例如使用`cv2.rectangle()`在特定区域绘制矩形框。 5. 使用`cv2.imshow()`显示截取的图像。 6. 使用`cv2.waitKey()`设置等待时间,确保用户可以观看图像。 7. 释放摄像头资源,关闭所有窗口。 示例代码如下: ```python import cv2 # 打开摄像头 cap = cv2.VideoCapture(0) while True: # 读取一帧图像 ret, frame = cap.read() if not ret: print("无法获取图像") break # 在这里可以进行图像处理,例如截取特定区域 # 假设我们要截取图像中心的100x100大小的区域 height, width = frame.shape[:2] x = (width - 100) // 2 y = (height - 100) // 2 frame = frame[y:y+100, x:x+100] # 显示截取的图像 cv2.imshow('frame', frame) # 按'q'键退出循环 if cv2.waitKey(1) & 0xFF == ord('q'): break # 释放摄像头资源 cap.release() # 关闭所有OpenCV窗口 cv2.destroyAllWindows() ``` 在实际应用中,根据具体需求可能需要对视频帧进行更复杂的处理,比如图像的旋转、缩放、应用滤镜、边缘检测等操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

owooooow

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值