gpt4 book ai didi

c++ - OpenCV 罗技 p270 提供损坏的数据

转载 作者:太空宇宙 更新时间:2023-11-03 22:49:05 25 4
gpt4 key购买 nike

我正在尝试使用 OpenCV 使用 p270 相机进行边缘检测,当我可以让它打开我的网络摄像头时,它收到的所有数据都已损坏。目前我的代码非常简单,只是想开始,但这让我很头疼。这是我的代码:

#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <stdlib.h>
#include <stdio.h>
//#include <opencv\cv.h>
//#include <opencv\highgui.h>
#include <iostream>
using namespace cv;

//Mat src, src_gray;
//Mat dst, detected_edges;

int main() {
VideoCapture capture(1);
if(!capture.isOpened()) {
printf("Camera failed to initialize\n");
return 1;
};
Mat src, src_gray;
Mat detected_edges;
while(1) {
capture >> src;
//cvtColor(src, src_gray, CV_BGR2GRAY);
//Canny(src_gray, detected_edges, 20, 60, 3);
imshow("Source", src);
//imshow("Gray Edges", detected_edges);

//if(waitKey(10) >= 0) break;
};

return 0;
};

此外,return 之前的最后一行应该使按退出键关闭程序,但由于某种原因它会导致程序自动关闭。有什么建议吗?

这是我遇到的错误示例

Corrupt JPEG data: 10 extraneous bytes before marker 0xd6

Corrupt JPEG data: 6 extraneous bytes before marker 0xd3

Corrupt JPEG data: 2 extraneous bytes before marker 0xd0

Corrupt JPEG data: 6 extraneous bytes before marker 0xd3

Corrupt JPEG data: 2 extraneous bytes before marker 0xd3

Corrupt JPEG data: 4 extraneous bytes before marker 0xd6

这是我使用的编译命令,以防它是一个编译时问题,但我对此非常怀疑。最好涵盖我所有的基础

g++ -o edge edge_detection.cpp $(pkg-config opencv --cflags --libs)

如果有人能提供帮助,我将不胜感激。

我已经尝试用我的标准笔记本电脑网络摄像头运行它,虽然我没有收到损坏的 jpeg 数据错误,但我只得到以下两行输出,然后是应该保存来自的数据的窗口网络摄像头超时。

init done
opengl support available

通过让它从网络摄像头获取第一个图像帧然后进入休眠状态,我确定代码实际上至少为第一个图像获取了有效的图像数据。也许有一种方法可以隔开获取图像的频率,这样它就不会发送持续的信息。不过,我不明白为什么它不能处理不断输入的信息。这非常令人沮丧。

我尝试过的事情

如您所见,我已经从代码中删除了几乎所有不需要的东西,但没有任何效果。

我已经尝试了这个问题的所有三个答案,但没有任何帮助:Opencv Error on Ubuntu Webcam (Logitech C270) Capture -> HIGHGUI ERROR: V4L/V4L2: VIDIOC_S_CROP

感谢您的帮助!

最佳答案

当你编写 if(waitKey(10) >= 0) break 时,你的 while 循环总是在第一次迭代后 break 因为 waitKey返回用户按下的键,如果在指定时间内没有按下任何键(在您的情况下为 10 毫秒),则返回 0。要显示您的输入,只要 waitKey 不返回您期望的 key (您说的是 escape = 27 ASCII),您就需要循环,所以请尝试:

   while (waitKey(10) != 27) {
capture >> src;
//cvtColor(src, src_gray, CV_BGR2GRAY);
//Canny(src_gray, detected_edges, 20, 60, 3);
imshow("Source", src);
//imshow("Gray Edges", detected_edges);
};

只要输入流可以被解码,这就会显示您的图像。

关于c++ - OpenCV 罗技 p270 提供损坏的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42431580/

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