使用openCV无法使用c170罗技网络摄像头(无法将像素格式从MJPG改为toVV)

时间:2013-09-11 14:06:43

标签: opencv

我试图运行教程代码进行对象检测。我有罗技c170网络摄像头。我无法在连接此凸轮的情况下运行任何教程代码。

HIGHGUI ERROR: V4L/V4L2: VIDIOC_S_CROP --(!) No captured frame -- Break!

但是我的内置网络摄像头可以有效运行同一个程序。因为我是openCV的新手,所以我无法理解错误。

当我使用

获取两个凸轮(内置和罗技c170)的细节时
v4l2-ctl --device=/dev/video0 --all
  

驱动程序信息(不使用libv4l2):       驱动程序名称:uvcvideo       卡类型:网络摄像头C170       公交信息:usb-0000:00:1d.0-1.2       驱动程序版本:3.2.50       功能:0x04000001           视频截取           流   格式视频捕获:       宽度/高度:640/480       像素格式:'MJPG'       领域:无       每行字节数:0       尺寸图片:921600       Colorspace:SRGB   裁剪能力视频捕捉:       界限:左0,前0,宽640,高480       默认值:左0,前0,宽640,高480       像素方面:1/1   视频输入:0(摄像头1:确定)   流媒体参数视频捕获:       能力:timeperframe       每秒帧数:30.000(30/1)       读缓冲区:0

我的区别在于两者的像素格式都不同。内置凸轮是YUYV而罗技是MJPG。更多我完全没有意识到MJPG格式..我试图使用

将甲酸变为YUYV
v4l2-ctl --device=/dev/video1 --set-fmt-video=width=640,height=480,pixelformat=0

我可以更改格式。但是当我再次运行程序时,错误重复,格式再次由系统更改为MJPG。

认为我是OpenCV中最小的人..

1 个答案:

答案 0 :(得分:0)

我已经尝试将Logitech C170与V4L2 API一起使用了几天,捕获YUYV未压缩图像似乎无法在640x480或640x360分辨率下工作。等待帧缓冲区填充使V4L2停止。

但这适用于UVC功能中报告的所有其他分辨率,例如: 352x288,320x240,176x144,160x120,544x288,432x240和320x176。

对于640x480分辨率,我只设法从相机中转储JFIF压缩帧。

如果您尝试的图像宽度低于640像素,也许可以让您的代码适用于此相机。