gpt4 book ai didi

opencv - opencv 中用于大图像的鼠标处理程序,错误的 x、y 坐标?

转载 作者:太空宇宙 更新时间:2023-11-03 21:38:48 25 4
gpt4 key购买 nike

我使用的是 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);
}

最佳答案

您应该使用 CV_WINDOW_KEEPRATIO 标志而不是 CV_WINDOW_AUTOSIZE 标志创建一个窗口。这暂时解决了您的 y 值错误的问题。

关于opencv - opencv 中用于大图像的鼠标处理程序,错误的 x、y 坐标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4055667/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com