Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ OpenCV Logitech p270提供损坏的数据_C++_Opencv - Fatal编程技术网

C++ OpenCV Logitech p270提供损坏的数据

C++ OpenCV Logitech p270提供损坏的数据,c++,opencv,C++,Opencv,我正在尝试使用OpenCV使用p270摄像头进行边缘检测,当我可以让它打开我的网络摄像头时,它接收到的所有数据都会被损坏。我的代码目前非常简单,只是想开始,但这让我头疼。这是我的代码: #include "opencv2/imgproc/imgproc.hpp" #include "opencv2/imgcodecs.hpp" #include "opencv2/highgui/highgui.hpp" #include <std

我正在尝试使用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;
};
如果有人能帮忙,我将不胜感激

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

init done
opengl support available
通过从网络摄像头获取第一个图像帧,然后进入睡眠状态,我确定代码实际上至少获取了第一个图像的有效图像数据。也许有一种方法,我可以找出获取图像的频率,这样它就不会发送恒定的信息。不过,我不明白为什么它在不断收到信息的情况下不起作用。这是非常令人沮丧的

我试过的东西 正如您所看到的,我已经从代码中删除了几乎所有不需要的东西,但没有任何东西起作用

在这个问题上,我尝试了所有三个答案,但都无济于事:

谢谢你的帮助

当您编写
if(waitKey(10)>=0)break
时,您在第一次迭代后始终执行while循环
break
,因为它返回用户按下的键,或者如果在指定的时间内没有按下任何键(在您的情况下为10ms),则返回0。要显示输入,只要
waitKey
没有返回您期望的键(您说的escape=27 ASCII),就需要循环,因此请尝试:


只要输入流可以解码,就应该显示您的图像。

尝试将
中的
1
替换为@slawekw,而
条件有效,谢谢!你能加上这个作为一个答案,这样你就可以得到一些信用(也许是一个解释)?
init done
opengl support available
   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);               
   };