检测 OpenCV C++窗口上的触摸



我正在尝试打开网络摄像头视频,然后在第一次点击时暂停它,然后在触摸屏显示器上第二次点击时关闭它。我使用的是OpenCV版本3.4.0。

目前,我可以通过按q键或关闭窗口来完成,但我无法通过屏幕点击来完成。这是我的代码示例:

bool exit_flag = false;
do
{
cv::imshow("window", draw_frame);
int key = cv::waitKey(3);
if (key == 'q'|| cv::getWindowProperty("window", cv::WND_PROP_ASPECT_RATIO) < 0) 
{ 
//do_something
exit_flag = true;
}
} while (!exit_flag);
cv::waitKey(0);
cv::destroyWindow("window"); 

我尝试使用cv::EVENT_LBUTTONDOWN但无法正确使用它来带来任何积极的结果。

如果代码不正确,请原谅我,我已经创建了一个示例进行演示,但我不太擅长C++。

如果你想使用鼠标关闭你的显示窗口,你可以简单地使用setMouseCallback。这是我的方法:您可以通过"q"关键字或简单地单击窗口来关闭窗口:

#include "opencv2/highgui/highgui.hpp"
#include <iostream>
using namespace std;
using namespace cv;
static bool exit_flag = false;

static void mouseHandler(int event,int x,int y, int flags,void* param){
if(event==1)
exit_flag = true;
}

int main(int argc, char **argv) {
Mat draw_frame = imread("/ur/image/directory/photo.jpg");
do {
cv::imshow("window", draw_frame);
int key = cv::waitKey(3);
setMouseCallback("window",mouseHandler);
if (key == 'q'|| cv::getWindowProperty("window", cv::WND_PROP_ASPECT_RATIO) < 0)
{
//do_something
exit_flag = true;
}
} while (!exit_flag);
cv::destroyWindow("window");
}

最新更新