public static String getHash(Bitmap bmp){
/**
* 第一步,缩小尺寸。
* 最快速的去除高频和细节,只保留结构明暗的方法就是缩小尺寸。
* 将图片缩小到8x8的尺寸,总共64个像素。摒弃不同尺寸、比例带来的图片差异
*/
int width = bmp.getWidth();
int height = bmp.getHeight();
int newWidth = 8;
int newHeight = 8;
float scaleWidth = ((float) newWidth) / width;
float scaleHeight = ((float) newHeight) / height;
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
Bitmap newbmp = Bitmap.createBitmap(bmp, 0, 0, width, height, matrix,true);
/**
* 第二步,简化色彩。
* 将缩小后的图片,转为64级灰度。也就是说,所有像素点总共只有64种颜色。
*/
int width1 = newbmp.getWidth(); //获取位图的宽
int height1 = newbmp.getHeight(); //获取位图的高
int []pixels = new int[width1 * height1]; //通过位图的大小创建像素点数组
newbmp.getPixels(pixels, 0, width1, 0, 0, width1, height1);
int alpha =
安卓感知哈希算法
最新推荐文章于 2022-12-09 16:42:34 发布
这篇博客详细介绍了如何在安卓平台上实现感知哈希算法,用于图像识别。首先通过缩小图片尺寸到8x8来减少高频和细节,然后将图片转化为64级灰度,接着计算所有像素的平均值。接下来,比较每个像素的灰度值与平均值,大于等于平均值的标记为1,反之为0。最后,将这些比较结果组合成一个字符串作为图片的指纹。这种方法可以用来识别相似图片。
摘要由CSDN通过智能技术生成