2

我正在使用 openCV 2.4 在 Visual Studio 2010 (C++) 中进行照片测量项目。我需要做的是能够单击照片上的任何地方并保存鼠标事件的 x 和 y 坐标。看起来很简单。但是,假设我的照片是 1920 x 1080。如果我尝试单击图像的右下角(甚至通过放大镜单击放大),我只能单击边缘点 (1916,1078)。如果我展开图像,它似乎可以点击得更远,这让我觉得有些不对劲。这是我的代码的主要部分。

创建窗口并设置回调函数的部分

// create a window
cvNamedWindow( "mainWin", CV_WINDOW_NORMAL ); 

// set mouse callback
cvSetMouseCallback("mainWin", onMouse);

// show the image
cvShowImage("mainWin", img );

// wait for a key
cvWaitKey(0);

// release the image
cvReleaseImage(&img );

onMouse 事件

void onMouse(int event, int x, int y, int flags, void *param){

switch(event){

    case CV_EVENT_LBUTTONDOWN: //single click
        char Char_Array[20];
        sprintf(Char_Array,"Click: %d, %d", x,y);  
        MessageBoxA(NULL, Char_Array, "ERROR", MB_TASKMODAL | MB_OK);

}

似乎它应该非常简单。关于为什么我无法访问第 1920 列或第 1080 行的任何想法?

4

0 回答 0