OpenCV调用摄像头

调用摄像头代码

Python
1
2
3
4
5
6
import cv2          # 图像处理的库 OpenCV

cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)
while stream.isOpened():
flag, img_rd = stream.read()
...
C++
1
2
3
4
5
6
7
8
9
10
#include <opencv/cv.h>
#include <opencv/highgui.h>

int main()
{
cv::VideoCapture cap(0, cv::CAP_DSHOW);
cv::Mat frame;
cap >> frame;
...
}

已知问题

  1. 实例化cv2.VideoCapture时需要加上cv2.CAP_DSHOW参数,默认参数为cv2.CAP_MSMF,容易产生兼容性问题;
  2. 调用read()时产生一个内存错误,错误代码0xC0000005,位于“VSFilter.dll”。一般在 Windows 7 等老系统下产生——
    **解决方法:**从Windows 10 里拷贝一个替换原有的(位于%SystemRoot%\System32\VSFilter.dll);

其他

  1. 在debug模式下运行OpenCV可以看到支持的模式^[1]^;

参考资料

  1. VideoCapture fails to get frame if I use msmf and mp4 has audio stream. #17400
  2. C++ OpenCV 0xC0000005 error while reading from camera
    参考译文:c++ - 从相机读取时C++ OpenCV 0xC0000005错误