我是opencv的新手,也许有些地方我还没有理解。我有一个等待按键'a'的waitkey,并且另一个是用于中断和退出程序的break。 其中一个似乎很好用,但两个一起使用的时候就会出问题。我没有收到编译器的错误或警告。包含的代码可以拍摄一系列枚举图片,但当我按下键盘上的字母 'q' 时它却无法关闭窗口。我做错了什么?
#include <stdio.h>
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv){
VideoCapture cap;
// open the default camera, use something different from 0 otherwise;
if(!cap.open(0))
return 0;
// Create mat with alpha channel
Mat mat(480, 640, CV_8UC4);
int i = 0;
for(;;){ //forever
Mat frame;
cap >> frame;
if( frame.empty() ) break; // end of video stream
imshow("this is you, smile! :)", frame);
if( waitKey(1) == 97 ){ //a
String name = format("img%04d.png", i++); // NEW !
imwrite(name, frame);
}
if( waitKey(1) == 113 ) break; // stop capturing by pressing q
}
return 0;
}
如何使用“q”键退出程序?
waitKey(1) == 113
改成waitKey(0) == 113
,这样它会等待一个按键,而不仅仅是 1 毫秒。 - DimChtz