C++ 如何让linux系统等待OpenCV程序?

C++ 如何让linux系统等待OpenCV程序?,c++,opencv,webcam,C++,Opencv,Webcam,我在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 = (in

我在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;
}
#包括
#包括
#包括
使用名称空间std;
void showVideo(CvCapture*视频)
{
int width=(int)cvGetCaptureProperty(视频、CV\u CAP\u PROP\u FRAME\u width);
int height=(int)cvGetCaptureProperty(视频、CV\u CAP\u PROP\u FRAME\u height);
//int fps=(int)cvGetCaptureProperty(视频、CV_CAP_PROP_fps);
IplImage*frame=cvCreateImage(cvSize(宽度、高度),8,1);
cvNamedWindow(“显示视频:”,0);
while(true)
{
帧=cvQueryFrame(视频);
cvShowImage(“显示视频:”,帧);
cvWaitKey(10);
}
//窗口(“显示视频:”);
//cvReleaseImage(&frame);
}
int main()
{
CvCapture*video=cvCaptureFromCAM(CV\u CAP\u ANY);
showVideo(视频);
返回0;
}
我想要一个
charch和类似的
虽然(ch!=“q”)
但它仍然播放视频。有一些方法,例如
kbhit()
getch()
,但它们不是标准的,我希望在按下“q”键时,视频显示将完成,否则视频显示仍将运行


如何执行此任务?

创建一个附加线程,新线程在其中等待stdin数据。如果它接收到正确的内容,则设置一个标志,其他线程将检查该标志。最明显的检查方法是更换

while (true)

其中,
done
初始化为false,并通过键盘线程设置为true。

cvWaitKey()如果在分配的时间内未按任何键,则返回0;如果按了键,则返回键代码。更改对cvWaitKey()的调用以测试返回值,如下所示:

chr = cvWaitKey(10);
if (chr == 'q')
    break;
chr = cvWaitKey(10);
if (chr == 'q')
    break;