在图像上绘制点opencv

4

我正在尝试对我的数据库中的一些图像进行注释,以便为学习做准备。我想在图像上绘制一些点并存储坐标,而不使用其他库(如Qt)。我使用Opencv的mouse_event来进行点击检测,方法如下:

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个回答

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

我基本上将=改为了==并加上了括号。希望对您有所帮助。


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

是的,谢谢你,我获取到了鼠标的坐标,但是在图像上没有圆圈。看起来很简单,我加载了一张图片并在我的窗口上调用了 SetMouseCallBack 函数,但是圆圈不在图片上 :\ .. - amineK

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接