0

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

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 色彩空间:SRGB 裁剪能力视频捕获:边界:左侧 0,顶部 0,宽度 640,高度 480 默认值:左侧 0,顶部 0 ,宽度 640,高度 480 像素纵横比:1/1 视频输入:0(相机 1:ok) 流参数视频捕获:功能: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 中最小的人..

4

1 回答 1

0

几天来,我一直在尝试将我的 Logitech C170 与 V4L2 API 一起使用,并且在 640x480 或 640x360 分辨率下捕获 YUYV 未压缩图像似乎不起作用。等待帧缓冲区填充会使 V4L2 停止。

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

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

如果您尝试使用低于 640 像素的图像宽度,也许您可​​以使您的代码与此相机一起使用。

于 2014-07-20T13:11:04.563 回答