计算机视觉 OpenCV (2)

作者 : 开心源码 本文共1703个字,预计阅读时间需要5分钟 发布时间: 2022-05-13 共245人阅读

今天分享的是如何通过 OpenCV 读写视频流。

读取视频流

import cv2cap = cv2.VideoCapture(0)

这里 VideoCapture 方法参数 0 表示读取默认摄像头的视频流,假如使用 0 没有成功可尝试给 -1,当设施有两个摄像头可以通过 1 来得到第二个摄像头的视频流。

while(True):    ret, frame = cap.read()    cv2.imshow('frame',frame)    if cv2.waitKey(1) & 0xFF == ord('q'):        break

cap 的 read 读取视频流方法会返回来两个参数, ret 表示能否成功获取视频流,而 frame 这是每一帧的画面,我们通过 imshow 方法将捕获画面显示出来,最后通过判断客户能否按下 q 键来执行退出操作。

cap.release()cv2.destroyAllWindows()

退出后我们还有少量重要的收尾工作就是需要释放掉 cap 对象。

读取视频流完整代码

import cv2# -1 1cap = cv2.VideoCapture(0)while(True):    ret, frame = cap.read()    cv2.imshow('frame',frame)    if cv2.waitKey(1) & 0xFF == ord('q'):        breakcap.release()cv2.destroyAllWindows()

我们也可以在输出每一帧画面前,对画面进行解决,这里通过 cvtColor 读取 frame 视频流根据指定第二个参数 cv2.COLOR_BGR2GRAY 将视频流数据转换为灰度图片

gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

将图片解决为灰度图,使用了 cvtColor 方法来实现。而后通过 cap 的 isOpened 方法来判断能否成功捕获到图片。

while(cap.isOpened()):    ret, frame = cap.read()    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)    cv2.imshow('frame',gray)    if cv2.waitKey(1) & 0xFF == ord('q'):        breakcap.release()cv2.destroyAllWindows()

通过 cap 实例也可以获取少量读取视频流的设置,下面可以输出读取视频流的视频的尺寸,也就是掌管

    print(cap.get(cv2.CAP_PROP_FRAME_WIDTH))    print(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
1280.0720.0

保存图像

VideoWriter_fourcc 用来设置需要保存视频的格,查看可以一个一个字符输入,可以可以以 * 开始输入这个字符串。

fourcc = cv2.VideoWriter_fourcc('X','V','I','D')
fourcc = cv2.VideoWriter_fourcc(*'XVID')

使用 VideoWriter 读取视频流,第一个参数为要写入的文件,第二个参数为输出的视频的格式,

cap = cv2.VideoCapture(0)fourcc = cv2.VideoWriter_fourcc(*'XVID')out = cv2.VideoWriter('output.avi',fourcc,20.0,(1280,720))while(cap.isOpened()):    ret, frame = cap.read()    if ret == True:            # print(cap.get(cv2.CAP_PROP_FRAME_WIDTH))    # print(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))        out.write(frame)        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)        cv2.imshow('frame',gray)        if cv2.waitKey(1) & 0xFF == ord('q'):            break    else:        breakcap.release()out.release()cv2.destroyAllWindows()

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 计算机视觉 OpenCV (2)

发表回复