0

我有一个截取自 a 的屏幕截图,java.awt.Robot并且知道在该屏幕截图的某处(更可能靠近中间)java.awt.image.BufferedImage会有一个独特的 10x10 纯红色(相同 RGB)彩色正方形。

找到其坐标的有效方法是什么?JavaCV 甚至是正确的库吗?我在.net 中找到了一种蛮力方法:位图检测,但我想知道是否有更好的方法。

4

1 回答 1

0

第一个问题是,识别颜色需要什么——它是一个精确的 RGB 值,其中颜色要么完全匹配,要么不匹配?如果图像是有损压缩的,例如JPEG格式,情况还会如此吗?

假设你能做到这一点,可能你想做一个搜索,尽量减少搜索区域所花费的时间,但不会产生结果:在两个对角之间的假想线上,测试每个角和中点的值;如果不匹配,尝试在中点和角之间的中点;如果不匹配,则将空间垂直或水平分成两半,然后重试;一旦找到正确颜色的像素,请编写一些代码沿每个方向遍历像素以确定它是否真的是 10x10。

真的任何类型的搜索模式都可以工作;您可能不想要的是您从 0,0 开始到 0,1 0,2 ... 1,0 1,2 的情况,因为这会使左上角的匹配速度快而右下角的速度慢(假设坐标空间从左上角开始)。

于 2013-10-18T22:03:25.603 回答