(ง •_•)ง[Python3 OpenCV4]3.视频操作

网友投稿 654 2022-05-30

文章目录

接口文档

打开摄像头

播放本地视频

录制视频

接口文档

VideoCapture Object

VideoWriter Object

cv2.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

(ง •_•)ง[Python3 OpenCV4]3.视频操作

15

16

17

18

VideoCaptureProperties

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

OpenCV Python 视频

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:AutoUpgrade升级至19C non-cdb
下一篇:高德地图JS--批量规划步行路线 优化
相关文章