在opencv图像上绘制点

时间:2013-10-18 08:22:02

标签: opencv mouseevent

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

}

但是,我总是得到坐标,它跟着鼠标移动而不是点击。任何人都能看到解决方案吗?

2 个答案:

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