源码
import cv2
def videocapture():
cap = cv2.VideoCapture(0) # 生成读取摄像头对象
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) # 获取视频的宽度
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) # 获取视频的高度
fps = cap.get(cv2.CAP_PROP_FPS) # 获取视频的帧率
fourcc = int(cap.get(cv2.CAP_PROP_FOURCC)) # 视频的编码
# 定义视频对象输出
writer = cv2.VideoWriter("video_result.mp4", fourcc, fps, (width, height))
while cap.isOpened():
ret, frame = cap.read() # 读取摄像头画面
cv2.imshow('teswell', frame) # 显示画面
key = cv2.waitKey(24)
writer.write(frame) # 视频保存
# 按Q退出
if key == ord('q'):
break
cap.release() # 释放摄像头
cv2.destroyAllWindows() # 释放所有显示图像窗口
if __name__ == '__main__':
videocapture()
输出结果
代码确实没问题
代码本身没有问题,在台式电脑上运行正常。检查一下笔记本电脑的摄像头是否可用,是内置的还是usb外接的,cameraid选择是否正确,有些使用笔记本的写成cap = cv2.VideoCapture(700)运行正常的。参考一下这里及跟帖:
cv2.VideoCapture(0)获取USB摄像头失败解决方案_hushaoqiqimingxing的博客-CSDN博客 问题:台式机没有摄像头,外接USB摄像头,通过cv2.VideoCapture(0)捕获视频图像报错[ WARN:0] videoio(MSMF): OnReadSample() is called with error status: -2147024809[ WARN:0] videoio(MSMF): async ReadSample() call is failed with e... https://blog.csdn.net/hushaoqiqimingxing/article/details/96888775