首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ubuntu网络凸轮(Logitech C270)捕获->的Opencv错误--高精度错误: V4L/V4L2: VIDIOC_S_CROP

Ubuntu网络凸轮(Logitech C270)捕获->的Opencv错误--高精度错误: V4L/V4L2: VIDIOC_S_CROP
EN

Stack Overflow用户
提问于 2013-03-20 19:51:12
回答 5查看 18.3K关注 0票数 11

在使用logitech C270 (OpenCV 2.4.2/C++)在Ubuntu上运行简单的相机捕获时,会出现此erorr消息:

高界面错误: V4L/V4L2: VIDIOC_S_CROP

并进一步:

损坏的JPEG数据:标记0xd1之前的2个外部字节,损坏的JPEG数据:标记0xd6之前的一个外部字节,损坏的JPEG数据:标记0xd0之前的一个外部字节,损坏的JPEG数据:标记0xd0之前的一个外部字节

我得到帧,但是在写入Mat对象时,帧宽和高度的值被交换,请参见下面的内容:

代码语言:javascript
复制
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;

输出:

代码语言:javascript
复制
Frame width: 640
Frame height: 480
Mat width: 480
Mat height: 640
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-03-21 16:53:19

图像的宽度由它的列数决定。你的代码应该是

代码语言:javascript
复制
cout << "Mat width: " << frame.cols << endl;
cout << "Mat height: " << frame.rows << endl;

所以在宽度和高度之间没有交换。

票数 2
EN

Stack Overflow用户

发布于 2013-04-06 15:05:45

如果你不想调试这个问题,并且你的摄像头显示的画面没有任何问题,你的选择就是直接射击信使。如果您已经从源代码构建了OpenCV,那么下面的说明可以工作,而不是安装预构建的二进制文件。

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

代码语言:javascript
复制
  if (cinfo->marker->discarded_bytes != 0) {
    WARNMS2(cinfo, JWRN_EXTRANEOUS_DATA, cinfo->marker->discarded_bytes, c);
    cinfo->marker->discarded_bytes = 0;
  }

WARNMS2宏是导致打印无关数据的错误消息的原因。只需注释掉它,重建OpenCV并继续您的工作。我也有一个C270,运行Ubuntu12.04,并且经历了同样的唠叨错误信息,直到我做了上面描述的事情。

票数 7
EN

Stack Overflow用户

发布于 2016-04-10 16:44:32

关于问题:

损坏的JPEG数据:标记0xd1之前的2个外部字节,损坏的JPEG数据:标记0xd6之前的一个外部字节,损坏的JPEG数据:标记0xd0之前的一个外部字节,损坏的JPEG数据:标记0xd0之前的一个外部字节

看起来,问题在libjpeg库中。由于一些未知的原因,它在OpenCV库下工作不正确。我试图在不支持JPEG的情况下编译,它解决了这个问题。

-D CMAKE_BUILD_TYPE=Release -D cmake _INSTALL_PREFIX=/usr/ -D BUILD_SHARED_LIBS=OFF -D BUILD_EXAMPLES=OFF -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D WITH_JPEG=OFF -D WITH_IPP=OFF .

你可以在我的博客上找到所有细节:

http://privateblog.by/linux/opencv-i-corrupt-jpeg-data-na-linux/

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15533338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档