python中使用opencv有不少小坑,现在打算在博客里面一一记录学习心得,与各位初学者共勉。
首先,刚开始学的时候,用的是opencv官方的python指导教程,可是我的电脑里面的opencv版本还是2.x的,结果导致摄像头始终打不开,后来发现需要更新版本,换了3.0以后一切都好起来了。可是,在学到教程中保存摄像头视频这里又出了幺蛾子,那就是关于视频的编码,教程上都是这么写的:
fourcc = cv2.VideoWriter_fourcc(*'XVID')out = cv2.VideoWriter('out.avi',fourcc, 20.0, (640,480))
可是按照这样写入代码,运行后得到的视频始终是空的,没有数据。
在网上找了下原因,原来是有些编码是没有的,当然保存不了视频了,一个最简单的保存方法就是将VideoWriter的第二个参数改为-1
out = cv2.VideoWriter('out.avi',-1, 20.0, (640,480))这样就可以弹出编码选择面板,让你自己选择存在的编码,每个都试了下,发现有些编码已经可以保存视频,有些还是不行,不知道为什么。不过还是挺高兴的,起码问题解决了。至于为啥有些编码没有,就不知道了,看到的朋友知道为什么的,请在下面公布下答案啊,谢谢!完整代码如下:
import numpy as np import cv2 cap = cv2.VideoCapture(0) out = cv2.VideoWriter('out.avi',-1, 20.0, (640,480)) while(cap.isOpened()): ret, frame = cap.read() frame = cv2.flip(frame,0) out.write(frame) cv2.imshow('frame',frame) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() out.release() cv2.destroyAllWindows()