【发布时间】:2016-10-24 23:23:07
【问题描述】:
将提供 2 张图片。我们需要找到它们之间的差异并突出显示它们。
到目前为止,我在 JAVA 中看到了这个 solution,但由于 BufferedImage 在 android 中不受支持,我无法继续进行。我已经接近比较 2 位图的像素,但面临着前面的问题。
我也尝试过比较两个位图的像素,但它会突出显示所有非白色
void findDifference(Bitmap firstImage, Bitmap secondImage)
{
if (firstImage.getHeight() != secondImage.getHeight() && firstImage.getWidth() != secondImage.getWidth())
Toast.makeText(this, "Images size are not same", Toast.LENGTH_LONG).show();
boolean isSame = true;
for (int i = 0; i < firstImage.getWidth(); i++)
{
for (int j = 0; j < firstImage.getHeight(); j++)
{
if (firstImage.getPixel(i,j) == secondImage.getPixel(i,j))
{
}
else
{
differentPixels.add(new Pixel(i,j));
secondImage.setPixel(i,j, Color.YELLOW); //for now just changing difference to yello color
isSame = false;
}
}
}
imgOutput.setImageBitmap(secondImage);
}
提前致谢。
【问题讨论】:
-
您面临的问题是什么?您是否可以提供任何代码来帮助我们查看您已经尝试过的内容?任何堆栈跟踪或错误日志?
-
我已经添加了代码的详细信息以及我得到的结果。谢谢
-
只是一个评论,但您验证图像大小相同的测试是错误的。它应该是
||而不是&& -
@Sunreef 你也可以发布图片吗?可能他们不同吗?通常你需要允许一些 eps 差异,比如
(Color.red(firstImage.getPixel(i,j)) - Color.red(secondImage.getPixel(i,j))) < eps && (Color.blue(firstImage.getPixel(i,j)) - Color.blue(secondImage.getPixel(i,j))) < eps && (Color.green(firstImage.getPixel(i,j)) - Color.green(secondImage.getPixel(i,j))) < eps,试试 eps=3