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