<p>我在macOS High Sierra 10.13.4、Python 3.6.5、OpenCV3.4.1上。</p>
<p>下面的代码(源代码:<a href="https://www.learnopencv.com/read-write-and-display-a-video-using-opencv-cpp-python/" rel="nofollow noreferrer">https://www.learnopencv.com/read-write-and-display-a-video-using-opencv-cpp-python/</a>)打开相机,按“q”键成功关闭窗口,并以.avi格式保存视频。</p>
<p>请注意,您需要将其作为.py文件运行。如果在Jupyter Notebook中运行,则窗口在关闭时挂起,需要强制quit Python关闭窗口。</p>
<pre><code>import cv2
import numpy as np
# Create a VideoCapture object
cap = cv2.VideoCapture(0)
# Check if camera opened successfully
if (cap.isOpened() == False):
print("Unable to read camera feed")
# Default resolutions of the frame are obtained.The default resolutions are system dependent.
# We convert the resolutions from float to integer.
frame_width = int(cap.get(3))
frame_height = int(cap.get(4))
# Define the codec and create VideoWriter object.The output is stored in 'outpy.avi' file.
out = cv2.VideoWriter('outpy.avi',cv2.VideoWriter_fourcc('M','J','P','G'), 10, (frame_width,frame_height))
while(True):
ret, frame = cap.read()
if ret == True:
# Write the frame into the file 'output.avi'
out.write(frame)
# Display the resulting frame
cv2.imshow('frame',frame)
# Press Q on keyboard to stop recording
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# Break the loop
else:
break
# When everything done, release the video capture and video write objects
cap.release()
out.release()
# Closes all the frames
cv2.destroyAllWindows()
</code></pre>