我尝试注释我的数据库的一些图像以准备它进行学习,我想在图像上绘制一些面上的点并存储坐标,没有其他的lib(如Qt),我使用mouse_event Opencv,因为我检测到这样的点击:
using namespace openni;
Point center;
Mat imgCurrent;
void plotPointImg(int event, int x, int y, int flags, void *param = NULL)
{
if(event = CV_EVENT_LBUTTONUP)
center = Point(x,y);
circle(imgCurrent, center,1,CV_RGB(255,0,0),3);
}
但是,我总是得到坐标,它跟着鼠标移动而不是点击。任何人都能看到解决方案吗?
答案 0 :(得分:3)
似乎CV_EVENT_LBUTTONUP
总是等于事件。而且您的代码中似乎有一些错误。改变方式:
void plotPointImg(int event, int x, int y, int flags, void *param = NULL)
{
if(event == CV_EVENT_LBUTTONUP)
{
center = Point(x,y);
circle(imgCurrent, center,1,CV_RGB(255,0,0),3);
}
}
我基本上将=
更改为==
并放置括号。希望它有所帮助..
答案 1 :(得分:0)
你在这里错过了正确的括号,你也想要==不=;)
if(event == CV_EVENT_LBUTTONUP) // maybe buttondown is what you want ?
{
center = Point(x,y);
circle(imgCurrent, center,1,CV_RGB(255,0,0),3);
}