Java 在屏幕截图中查找信标图像位置的有效方法

Java 在屏幕截图中查找信标图像位置的有效方法,java,opencv,screenshot,javacv,image-recognition,Java,Opencv,Screenshot,Javacv,Image Recognition,我从java.awt.Robot中截取了一个屏幕截图,作为java.awt.image.buffereImage,我知道在这个屏幕截图的某个地方会有一个独特的10x10纯红(相同的RGB)色正方形(更可能靠近中间) 找到坐标的有效方法是什么?JavaCV甚至是正确的库吗?我在.net中找到了一种蛮力方法:但我想知道是否有更好的方法。第一个问题是,识别颜色需要什么——颜色是精确的RGB值,颜色是精确匹配还是不匹配?如果图像是有损压缩的,比如JPEG,情况还会是这样吗 假设你能做到这一点,也许你想做

我从
java.awt.Robot
中截取了一个屏幕截图,作为
java.awt.image.buffereImage
,我知道在这个屏幕截图的某个地方会有一个独特的10x10纯红(相同的RGB)色正方形(更可能靠近中间)


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

第一个问题是,识别颜色需要什么——颜色是精确的RGB值,颜色是精确匹配还是不匹配?如果图像是有损压缩的,比如JPEG,情况还会是这样吗

假设你能做到这一点,也许你想做一个搜索,尽量减少花在搜索不会有结果的区域上的时间:在两个相反的角之间的一条假想线上,测试每个角和中点的值;如果不匹配,则在中点和角点之间的中点处尝试;如果不匹配,将空间垂直或水平分成两半,然后重试;一旦你找到一个颜色合适的像素,用一些代码在每个方向上移动像素,以确定它是否真的是10x10


实际上,任何类型的搜索模式都可以工作;你可能不希望出现这样的情况,即你从0,0开始,然后到0,10,2。。。1,0 1,2,因为这将使左上角的匹配变快,右下角的匹配变慢(假设坐标空间从左上角开始)。

谢谢,我将尝试此方法。我猜OpenCV对于这个问题来说太重了,更适合近似匹配。