4

我试图注释我的数据库的一些图像以准备学习,我想在图像上的脸上绘制一些点并存储坐标,没有其他库(如 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);

}

但是,我一直得到坐标,它跟随鼠标移动而不是点击..有人看到解决方案吗?

4

2 回答 2

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);
    }
}

我基本上改为===放置了括号。希望能帮助到你..

于 2013-10-18T09:33:01.770 回答
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);
}
于 2013-10-18T09:33:56.593 回答