gpt4 book ai didi

c++ - 在OpenCV C++窗口上检测触摸

转载 作者:行者123 更新时间:2023-12-02 10:21:57 26 4
gpt4 key购买 nike

我正在尝试打开网络摄像头视频,然后在第一次点击时将其暂停,然后在第二次点击时将其关闭。我正在使用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");
}

关于c++ - 在OpenCV C++窗口上检测触摸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59782769/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com