我试图运行教程代码进行对象检测。我有罗技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格式..我试图使用
将甲酸变为YUYVv4l2-ctl --device=/dev/video1 --set-fmt-video=width=640,height=480,pixelformat=0
我可以更改格式。但是当我再次运行程序时,错误重复,格式再次由系统更改为MJPG。
认为我是OpenCV中最小的人..
答案 0 :(得分:0)
我已经尝试将Logitech C170与V4L2 API一起使用了几天,捕获YUYV未压缩图像似乎无法在640x480或640x360分辨率下工作。等待帧缓冲区填充使V4L2停止。
但这适用于UVC功能中报告的所有其他分辨率,例如: 352x288,320x240,176x144,160x120,544x288,432x240和320x176。
对于640x480分辨率,我只设法从相机中转储JFIF压缩帧。
如果您尝试的图像宽度低于640像素,也许可以让您的代码适用于此相机。