我正在使用AForge库使用
this code example在其他图像中找到(部分)图像.
(以下图片仅供参考)
我在1920×1080像素使用这个桌面截图:
我搜索并找到上面这张图片(55×557像素):
但是我将这两个图像调整为25%(以获得比率),所以当我比较图像时,桌面截图为480×270像素.切割后的图像为13×14像素.
使用AForge库,它返回调整大小的桌面screennshot内找到(切割)图像的相对坐标,坐标为x = 86,y = 200.
现在我需要在我的dektop中设置鼠标位置,位于VMWare图标的中心(更精确地位于找到的切割图像的中心),这里是我困惑的地方,设置鼠标的算术运算是什么在那里?
我会记得:
Resolutions:
我的桌面:1920×1080
图1:1920×1080
要在Image1中找到的图像:55×57
调整后的Image1:480×270
要在Image1中找到的已调整大小的图像:13×14
Relative coordinates of the found resized Image to find in Image1 :
x = 86,y = 200
最佳答案 缩小图像时,执行以下操作:
intReducePct = 25
ReducedImg1 = ResizeImage(desktopBMP, intReducePct)
' save a restore factor
intFactor = (100 / intReducePct) ' == 4
' I dont know what the AFOrge search returns, a Point probably
foundPt = Aforge.FindImgInImg(...)
' convert fountPt based on reduction factor (you reduced by 1/4th,
' so scale up by 4x, basically)
Dim actualPoint As New Point(foundPt.X * intFactor, foundPt.Y * intFactor)
AForge返回x = 86,y = 200;和86 * 4 = 344; 200 * 4 = 800,但这是原始图像中的上/左(?),你显然想要找到图像的中心,所以也调整原始位图:
' convert fountPt based on reduction factor + bmpFind size:
Dim actualPoint As New Point((foundPt.X * intFactor) + (bmpFind.Width \ 2),
(foundPt.Y * intFactor) + (bmpFind.Height \ 2))
bmpFind将是缩小前的原始图像. Option Strict会坚持一些CType,但这应该是它的要点.