python2.x版本的v4l2capture很简单,源码在这里
执行:./setup.py build
执行:sudo ./setup.py install
python3.x版本的v4l2capture,需要将.c里面的#include
执行:./setup.py build
执行:sudo ./setup.py install
python3 的pip install v4l2capture方式是不行的,python2没试过
我的python环境是anaconda的,将生成的v4l2capture.o放在site-packages下就可以import v4l2capture了,调用代码在源码里面都有了。
import cv2
import time
cap = cv2.VideoCapture(1)
cap.set(cv2.CAP_PROP_FPS,100)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1920)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080)
cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter.fourcc('M', 'J', 'P', 'G'))
while True:
start = time.time()
ret, frame = cap.read()
if ret:
cv2.imshow("test", frame)
print(time.time()-start)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
cap.set(cv2.CAP_PROP_FPS,100)这句有的时候并不起作用,根据 stackoverflow所说,实际上用的还是v4l2。
下面给出常见的一些opencv capture参数:
VideoCapture capture(0); 设置摄像头参数 不要随意修改
capture.set(CV_CAP_PROP_FRAME_WIDTH, 1080);//宽度
capture.set(CV_CAP_PROP_FRAME_HEIGHT, 960);//高度
capture.set(CV_CAP_PROP_FPS, 30);//帧率 帧/秒
capture.set(CV_CAP_PROP_BRIGHTNESS, 1);//亮度
capture.set(CV_CAP_PROP_CONTRAST,40);//对比度 40
capture.set(CV_CAP_PROP_SATURATION, 50);//饱和度 50
capture.set(CV_CAP_PROP_HUE, 50);//色调 50
capture.set(CV_CAP_PROP_EXPOSURE, 50);//曝光 50 获取摄像头参数
得到摄像头的参数
capture.get(CV_CAP_PROP_FRAME_WIDTH);
capture.get(CV_CAP_PROP_FRAME_HEIGHT);
capture.get(CV_CAP_PROP_FPS);
capture.get(CV_CAP_PROP_BRIGHTNESS);
capture.get(CV_CAP_PROP_CONTRAST);
capture.get(CV_CAP_PROP_SATURATION);
capture.get(CV_CAP_PROP_HUE);
capture.get(CV_CAP_PROP_EXPOSURE); 获取视频参数:
capture.get(CV_CAP_PROP_FRAME_COUNT);//视频帧数
可以参考这篇文章