我正在使用opencv和python编写视频。有两件事我没道理。
1)我的相机(Logitech c930e)具有高分辨率。我以前录制视频时,分辨率为1280 x 720
。现在,当我运行下面的代码时,它正在640 x 480
处记录。为什么更改默认分辨率并记录为640 x 480
?
2)要在1280 x 720
进行记录,我将参数设置为cap.set(3, 1280)
和cap.set(4, 720)
。这次,录制的视频变得更快。因此,我降低了帧速率(fps)值。在这方面,它记录的速度几乎接近默认速度。但是,如何知道1280 x 720
的确切fps值,这样我才能以正常速度拍摄640 x 480
的视频,这是我的默认视频录制分辨率?而提高视频速度以获得更高分辨率的原因是什么?
import numpy as np
import cv2
cap = cv2.VideoCapture(0)
cap.set(3, 1280)
cap.set(4,720)
# Tip for read the frame size
ret, frame = cap.read()
print('ret =', ret, 'W =', frame.shape[1], 'H =', frame.shape[0], 'channel =', frame.shape[2])
# Save the Video
FPS= 10.0
FrameSize=(frame.shape[1], frame.shape[0])
isColor=0# flag for color(true or 1) or gray (0)
fourcc = cv2.VideoWriter_fourcc(*'MJPG')
out = cv2.VideoWriter('Video_output.avi', fourcc, FPS, FrameSize)
while(cap.isOpened()):
ret, frame = cap.read()
# Save the video
out.write(frame)
cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
out.release()
cv2.destroyAllWindows()