(ง •_•)ง[Python3 OpenCV4]3.视频操作
【摘要】
文章目录
接口文档打开摄像头播放本地视频录制视频
接口文档
VideoCapture ObjectVideoWriter Objectcv2.cvtColor()
打开摄像头
...
接口文档
打开摄像头
使用摄像头,需要使用cv2.VideoCapture(0)创建VideoCapture对象,参数0指的是摄像头的编号,如果你电脑上有两个摄像头的话,访问第2个摄像头就可以传入1,依此类推。
import cv2
#
capture = cv2.VideoCapture(0)
if None == capture:
print("摄像头打开失败")
while(True):
# 获取一帧
ret, frame = capture.read()
if ret == False:
continue
# 将这帧转换为灰度图
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow('frame', gray)
if cv2.waitKey(1) == ord('q'):
break
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- cv2.CAP_PROP_POS_MSEC
视频文件的当前位置(毫秒)。 - cv2.CAP_PROP_POS_FRAMES
下一步要解码/捕获的帧的基于0的索引。 - cv.2CAP_PROP_POS_AVI_RATIO
视频文件的相对位置:0=胶片开始,1=胶片结束。
import cv2
#打开 0号摄像头
capture = cv2.VideoCapture(0)
# 获取捕获的分辨率
# propId可以直接写数字,也可以用OpenCV的符号表示
width, height = capture.get(3), capture.get(4)
print(width, height)
# 以原分辨率的一倍来捕获
capture.set(cv2.CAP_PROP_FRAME_WIDTH, width * 2)
capture.set(cv2.CAP_PROP_FRAME_HEIGHT, height * 2)
# 某些摄像头设定分辨率等参数时会无效,因为它有固定的分辨率大小支持,一般可在摄像头的资料页# 中找到
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
播放本地视频
播放视频其实跟打开摄像头的操作一样
我们也可以获取视频分辨率、帧率、当前播放帧等等信息,可以查看
VideoCapture Object
结构就可以看到信息了~~~~~~~~~~
eg:
import cv2
# 播放本地视频
capture = cv2.VideoCapture('wzry.mp4')
#打印一些视频的信息
print(capture.get(cv2.CAP_PROP_POS_MSEC))
width = capture.get(cv2.CAP_PROP_FRAME_WIDTH)
height = capture.get(cv2.CAP_PROP_FRAME_HEIGHT)
print("分辨率:%f,%f"%(width,height))
print("休息一会")
while(capture.isOpened()):
ret, frame = capture.read()
if False == ret:
print("视频播放完毕~~~")
break
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow('frame', gray)
if cv2.waitKey(30) == ord('q'):
print("手动退出了~~~~")
break
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
录制视频
关于视频四字节码,可以去这个网站查看
http://www.fourcc.org/codecs.php
如下功能是读取一个视频,转存成另一个视频
import cv2
# 定义编码方式并创建VideoWriter对象
# 指定视频编码方式的四字节码
'''
cv2.VideoWriter_fourcc('P','I','M','1') = MPEG-1 codec
cv2.VideoWriter_fourcc('M','J','P','G') = motion-jpeg codec --> mp4v
cv2.VideoWriter_fourcc('M', 'P', '4', '2') = MPEG-4.2 codec
cv2.VideoWriter_fourcc('D', 'I', 'V', '3') = MPEG-4.3 codec
cv2.VideoWriter_fourcc('D', 'I', 'V', 'X') = MPEG-4 codec --> avi
cv2.VideoWriter_fourcc('U', '2', '6', '3') = H263 codec
cv2.VideoWriter_fourcc('I', '2', '6', '3') = H263I codec
cv2.VideoWriter_fourcc('F', 'L', 'V', '1') = FLV1 codec
'''
#视频读取
capture = cv2.VideoCapture('wzry.mp4')
#获取FPS
video_fps = capture.get(cv2.CAP_PROP_FPS)
#获取宽度、高度
video_width = capture.get(cv2.CAP_PROP_FRAME_WIDTH)
video_height = capture.get(cv2.CAP_PROP_FRAME_HEIGHT)
video_size =(int(video_width),int(video_height))
#获取视频编码方式的四字节码
codec = capture.get(cv2.CAP_PROP_FOURCC)
#strcodec = chr(codec&0xFF) + chr((codec>>8)&0xFF) + chr((codec>>16)&0xFF) + chr((codec>>24)&0xFF)
#print ('codec is ' + strcodec)
outfile = cv2.VideoWriter('output.mp4', int(codec), video_fps, video_size)
while(capture.isOpened()):
ret, frame = capture.read()
if ret:
outfile.write(frame) # 写入文件
cv2.imshow('frame', frame)
if cv2.waitKey(1) == ord('q'):
break
else:
break
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
文章来源: yujiang.blog.csdn.net,作者:鱼酱2333,版权归原作者所有,如需转载,请联系作者。
原文链接:yujiang.blog.csdn.net/article/details/104152500
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)