Я использую изображения размером 2048 x 500, и когда я использую cvShowImage, я вижу только половину изображения.Это не имеет большого значения, потому что интересная часть находится на верхней половине изображения.Теперь, когда я использую mouseHandler, чтобы получить координаты x, y моих кликов, я заметил, что координата для y (размер, который не помещается на экране) неверна.
Кажется, OpenCV думает, что это целое изображение и перекалибрует систему координат, хотя мы эффективно показываем только половину изображения.
Мне нужно знать, как сделать 2 вещи: - отобразитьизмененное изображение, которое уместилось бы на экране
- получить правильную координату.
Кто-нибудь сталкивался с подобными проблемами?
Спасибо!
Обновление: кажется, координата y делится на 2 от того, что должно быть
код:
EXPORT void click_rect(uchar * the_img, int size_x, int size_y, int * points)
{
CvSize size;
size.height = size_y ;
size.width = size_x;
IplImage * img;
img = cvCreateImageHeader(size, IPL_DEPTH_8U, 1);
img->imageData = (char *)the_img;
img->imageDataOrigin = img->imageData;
img1 = cvCreateImage(cvSize((int)((size.width)) , (int)((size.height)) ),IPL_DEPTH_8U, 1);
cvNamedWindow("mainWin",CV_WINDOW_AUTOSIZE);
cvMoveWindow("mainWin", 100, 100);
cvSetMouseCallback( "mainWin", mouseHandler_rect, NULL );
cvShowImage("mainWin", img1 );
//// wait for a key
cvWaitKey(0);
points[0] = x_1;
points[1] = x_2;
points[2] = y_1;
points[3] = y_2;
//// release the image
cvDestroyWindow("mainWin");
cvReleaseImage(&img1 );
cvReleaseImage(&img);
}