【发布时间】:2019-08-28 19:51:31
【问题描述】:
我使用的是 2048 x 500 的图像,当我使用 cvShowImage 时,我只能看到一半的图像。这没什么大不了的,因为有趣的部分在图像的上半部分。现在,当我使用 mouseHandler 获取单击的 x,y 坐标时,我注意到 y 的坐标(不适合屏幕的尺寸)是错误的。
OpenCV 似乎认为这是整个图像并重新校准坐标系,尽管我们只有效地显示了一半图像。
我需要知道如何做两件事: - 显示适合屏幕大小的调整大小的图像
- 获取正确的坐标。
有人遇到过类似的问题吗?
谢谢!
更新:似乎 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);
}
【问题讨论】:
-
您使用的是 Windows、Linux 或 Mac OS X 和 OpenCV 版本吗?
-
我用的是windows,用的是microsoft visual c++ 2008 express
标签: opencv mouseevent