如何获取图片框内图像的鼠标点击坐标(不是图片框鼠标点击坐标而是图像像素坐标)



我一直试图在用户点击图像框时在图像上的鼠标位置放置标记,问题是标记有一定的偏移量,这是指数级的,我认为这是因为图像大小不等于图像框大小。我还想在图像放大后放置标记。

这是一个windows窗体项目,它使用emgucv, OpenCV和c++/cli。

注意:我使用OpenCV函数通过传递鼠标点击坐标来放置标记。

有谁能帮帮我吗?

我在本文中找到了解决方案https://www.codeproject.com/Articles/20923/Mouse-Position-over-Image-in-a-PictureBox您需要将PictureBox坐标转换为图像坐标,但是,这取决于PictureBox的大小模式。

我发现了一个简单的方法来获得鼠标点击坐标相对于图像坐标使用ImageBox(添加emgu . csv . ui通过Nuget)。将MouseClick事件添加到ImageBox中,并将该子例程如下所示

private void imageBox1_MouseClick(object sender, MouseEventArgs e)
{
var ib = (ImageBox)sender;
var x_offset = ib.HorizontalScrollBar.Value;
var y_offset = ib.VerticalScrollBar.Value;
var x = e.Location.X;
var y = e.Location.Y;
var zoom = ib.ZoomScale;
int X = (int)((x / zoom) + x_offset);
int Y = (int)((y / zoom) + y_offset);
//MessageBox.Show(String.Format("{0}, {1}", X, Y));

}

最新更新