java获取图片比较相似度代码
时间: 2023-10-28 21:06:07 浏览: 40
以下是 Java 中获取图片相似度的代码示例:
```
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class ImageSimilarity {
public static void main(String[] args) throws IOException {
File img1 = new File("image1.png");
File img2 = new File("image2.png");
BufferedImage image1 = ImageIO.read(img1);
BufferedImage image2 = ImageIO.read(img2);
double similarity = compareImages(image1, image2);
System.out.println("The similarity score is: " + similarity);
}
private static double compareImages(BufferedImage image1, BufferedImage image2) {
int width1 = image1.getWidth();
int width2 = image2.getWidth();
int height1 = image1.getHeight();
int height2 = image2.getHeight();
if ((width1 != width2) || (height1 != height2)) {
throw new IllegalArgumentException("Images must have the same dimensions");
}
long difference = 0;
for (int y = 0; y < height1; y++) {
for (int x = 0; x < width1; x++) {
int rgb1 = image1.getRGB(x, y);
int rgb2 = image2.getRGB(x, y);
int red1 = (rgb1 >> 16) & 0xff;
int green1 = (rgb1 >> 8) & 0xff;
int blue1 = (rgb1) & 0xff;
int red2 = (rgb2 >> 16) & 0xff;
int green2 = (rgb2 >> 8) & 0xff;
int blue2 = (rgb2) & 0xff;
difference += Math.abs(red1 - red2);
difference += Math.abs(green1 - green2);
difference += Math.abs(blue1 - blue2);
}
}
double total_pixels = width1 * height1 * 3;
double avg_different_pixels = difference / total_pixels;
double similarity = (avg_different_pixels / 255) * 100;
return (100 - similarity);
}
}
```
该代码使用 Java 中的 `BufferedImage` 类加载两张图片,并计算它们之间的相似度。它通过比较两个像素的 RGB 值来计算不同之处,并将其与总像素数相除以获得平均不同像素数。然后,该代码将平均不同像素数除以 255 并将其乘以 100,以获得相似度百分比。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)