C++ 如何让linux系统等待OpenCV程序?
我在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
#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;