我在 OpenCV 上有一个非常简单的程序:
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>
using namespace std;
void showVideo(CvCapture *video)
{
int width = (int) cvGetCaptureProperty(video, CV_CAP_PROP_FRAME_WIDTH);
int height = (int) cvGetCaptureProperty(video, CV_CAP_PROP_FRAME_HEIGHT);
//int fps = (int) cvGetCaptureProperty(video, CV_CAP_PROP_FPS);
IplImage* frame = cvCreateImage(cvSize(width, height), 8, 1);
cvNamedWindow("Showing Video:", 0);
while (true)
{
frame = cvQueryFrame(video);
cvShowImage("Showing Video:", frame);
cvWaitKey(10);
}
//cvDestroyWindow("Showing Video:");
//cvReleaseImage(&frame);
}
int main()
{
CvCapture *video = cvCaptureFromCAM(CV_CAP_ANY);
showVideo(video);
return 0;
}
我想要一个 char ch;
和类似这样的东西 while(ch != 'q')
然后它仍然播放视频。有一些方法,例如 kbhit()
或 getch()
但它们不是标准的,我想要一些东西,只要按下“q”键,然后显示视频将结束,否则视频将继续播放。
我该如何做这份工作?
最佳答案
如果在分配的时间内没有按键被按下,cvWaitKey() 返回 0,如果按键被按下则返回按键代码。更改对 cvWaitKey() 的调用以测试返回值,如下所示:
chr = cvWaitKey(10);
if (chr == 'q')
break;
关于c++ - 如何让 linux 系统等待 OpenCV 程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9542134/