Я работаю над проектом фотоизмерений в Visual Studio 2010 (C ++) с openCV 2.4. Что мне нужно сделать, так это иметь возможность щелкнуть ЛЮБОЕ на фотографии и сохранить координаты 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-й строке?
Задача ещё не решена.
Других решений пока нет …