提问者:小点点

如何将x.y坐标的值存储在不同的数组中


下面的代码返回MouseClick上的x,y坐标值。 我想把x坐标存储在一个数组A[10]中,把y坐标存储在另一个数组B[10]中。

为此,我尝试使用For循环,但x,y坐标不显示在数组中。

如何将这些坐标存储在数组中?

我想在一个图像上点击鼠标10次,我想将所有10个坐标存储在数组中,在我的代码中,当我点击鼠标一次时,这个x,y坐标存储在数组中10次。

#include <iostream>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>

using namespace cv;
using namespace std;
int i;int x;int y;
int a[10];int b[10];
void CallBackFunc(int event, int x, int y, int flags, void* userdata);

int main(int argc, char** argv)
{
     // Read image from file
     Mat img = imread("G:/qt-program/CA2.jpg");

     //Create a window
     namedWindow("My Window", 1);


     //set the callback function for any mouse event
   setMouseCallback("My Window", CallBackFunc, NULL);

     //show the image
     imshow("My Window", img);

     // Wait until user press some key
     waitKey(0);

     return 0;

}


void CallBackFunc(int event, int x, int y, int flags, void* userdata)
{

     if  ( event == EVENT_LBUTTONDOWN )
     {
          cout << "Left button of the mouse is clicked - position (" << x << ", " << y << ")" << endl;


            for ( i = 0; i < 10; ++i){

               a[i]=x;
               b[i]=y;

          }
     for ( i = 0; i < 10; ++i){
     cout << a[i] << endl;
     cout << b[i] << endl;
}

    }


}

共1个答案

匿名用户

您将当前的x和y存储到数组中的所有单元格中,但您需要存储到下一个单元格中。 您可以为数组中下一个单元格的索引创建全局var,即执行如下操作(伪代码)

int nextInd = 0;
...
CallBack(event, x, y, ...) {
  if (...) {
    a[nextInd] = x;
    b[nextInd++] = y;
  } 
}