一般来说,USB的UVC摄像头在LINUX平台下通过V4L驱动来使用。OpenCV打开USB的UVC摄像头一般也通过V4L驱动来打开。打开方法网上都有,一般就是通过VideoCapture的open(int index)函数来打开,其中index设为202。如下:
VideoCapture cap;
Mat frame;
if(!cap.open(202))
cout<<"camera error!"<<endl;
while(1)
{
cap>>frame;
//do what you want here
//put your code here
}
注意这个打开的索引号,只有设置为202才能打开UVC摄像头,设置成其他的往往都无法开UVC摄像头,和windows平台不一样。那么,为什么UVC摄像头的索引需要设为202呢?我们可以看下Opencv的源码,就可以明白。
CV_IMPL CvCapture * cvCreateCameraCapture (int index)
{
// interpret preferred interface (0 = autodetect)
int pref = (index / 100) * 100;
// remove pref from index
index -= pref;
// local variable to memorize the captured device
CvCapture *capture = 0;
switch (pref)
{
default:
// user specified an API we do not know
// bail out to let the user know that it is not available
if (pref) break;
#ifdef HAVE_MSMF
case CV_CAP_MSMF:
if (!capture)
capture = cvCreateCameraCapture_MSMF(index);
if (pref) break;
#endif
#ifdef HAVE_TYZX
case CV_CAP_STEREO:
if (!capture)
capture = cvCreateCameraCapture_TYZX