gpt4 book ai didi

Ubuntu 网络摄像头 (Logitech C270) 上的 Opencv 错误捕获 -> HIGHGUI 错误 : V4L/V4L2: VIDIOC_S_CROP

转载 作者:太空宇宙 更新时间:2023-11-03 20:40:11 28 4
gpt4 key购买 nike

此错误消息出现在使用罗技 C270 (OpenCV 2.4.2/C++) 的 Ubuntu 上运行简单的相机捕获时:

HIGHGUI ERROR: V4L/V4L2: VIDIOC_S_CROP

还有:

Corrupt JPEG data: 2 extraneous bytes before marker 0xd1 Corrupt JPEG data: 1 extraneous bytes before marker 0xd6 Corrupt JPEG data: 1 extraneous bytes before marker 0xd0 Corrupt JPEG data: 1 extraneous bytes before marker 0xd0

我得到了框架,但是在写入 Mat 对象时交换了框架宽度和高度的值,如下所示:

Mat frame;
videoCapture = new VideoCapture(camId);
if(!videoCapture->isOpened()) throw Exception();

cout << "Frame width: " << videoCapture->get(CV_CAP_PROP_FRAME_WIDTH) << endl;
cout << "Frame height: " << videoCapture->get(CV_CAP_PROP_FRAME_HEIGHT) << endl;

(*videoCapture) >> frame;

cout << "Mat width: " << frame.rows << endl;
cout << "Mat height: " << frame.cols << endl;

输出:

Frame width: 640
Frame height: 480
Mat width: 480
Mat height: 640

最佳答案

如果您不想调试问题,并且您的网络摄像头的帧显示没有任何问题,您的选择是直接射击 Messenger。如果您从源代码构建 OpenCV,而不是安装预构建的二进制文件,则以下说明适用。

grep -R "Corrupt JPEG data"~/src/opencv-2.4.4/ 开始,深入兔子洞,直到找到你想要的。在我的例子中,罪魁祸首在 opencv-2.4.4/thirdparty/libjpeg/jdmarker.c:908:

  if (cinfo->marker->discarded_bytes != 0) {
WARNMS2(cinfo, JWRN_EXTRANEOUS_DATA, cinfo->marker->discarded_bytes, c);
cinfo->marker->discarded_bytes = 0;
}

WARNMS2 宏导致打印有关无关数据的错误消息。只需将其注释掉,重建 OpenCV 并继续您的工作。我也有一个 C270,运行 Ubuntu 12.04,在我执行上述操作之前遇到了同样烦人的错误消息。

关于Ubuntu 网络摄像头 (Logitech C270) 上的 Opencv 错误捕获 -> HIGHGUI 错误 : V4L/V4L2: VIDIOC_S_CROP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15533338/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com