C++ OpenCV Logitech p270提供损坏的数据
我正在尝试使用OpenCV使用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
#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);
};