Bitmap(来自android.graphics)具有sameAs方法。
给定另一个位图,如果它具有与此位图相同的尺寸,配置和像素数据,则返回true。
我想知道它是如何工作的?覆盖它是否有意义(也许使用某些直方图方法或关键点匹配)?

最佳答案

它基本上可以

if(bmp1.height==bmp2.height && bmp1.width==bmp2.width) {
  for(int i=0; i< bmp1.width; i++){
    for(int j=0; j< bmp1.height; j++){
      if(bmp1.getPixel(i,j) != bmp2.getPixel(i,j)) {
        return false;
      }
    }
  }
  return true;
}
return false;


但是它将使用像memcmp这样的低级内存比较功能,而不是像这样实际循环。

至于覆盖它是否有意义-并非如此。您会搞砸其他假定该功能仍然有效的人。创建您自己的函数sameKeyPoint可能会进行关键点匹配,这很有意义。

08-18 09:35