如何在opencv和c ++中使用鼠标在图像上绘制线条?

时间:2014-08-27 22:34:48

标签: c++ opencv image-processing

我的目标是在opencv和c ++中使用鼠标在图像中绘制一条线。我在网上查看了不同的代码,但我想在脑子里想出一些想法后自己尝试一下。我可能完全错了,但我只是一个初学者。所以,我想尝试但它仍然没有工作所以我想在这里发布它。如果可能,请纠正我的错误。

 POINT p;
  GetCursorPos(&p);
 bool drawing;
  int x;
  int y;
  int startx,starty;
  int finishx,finishy;

  int z;
  int l;
Mat a;
a = imread("a.JPG");

 if(GetKeyState(VK_LBUTTON) & 0x80 != 0)
 {
     drawing = true;
     x = p.x;
    y = p.y;
    startx = x;//the starting position to start the drawing
     starty = y;


 }
if(GetKeyState(VK_RBUTTON) &0x80 != 0)
 {
     drawing = false;
    z= p.x;
    l = p.y;

    finishx = z;
    finishy = l;

 }
if(drawing==true)
  {
      line(a,Point(startx,starty),Point(finishx,finishy),Scalar(0,0,255),1);
          imshow("test image",a);
  }

1 个答案:

答案 0 :(得分:2)

您需要将您的线条图代码放在setMouseCallback()指定的回调函数中。 OpenCV有一个demo of how to do the callback。另请参阅此问题的答案Drawing rectangle or line using mouse events in open cv using python(答案在C ++中)