java 像素图像处理

标签 java android image-processing

适用于 Android 的 Java 应用程序。有以下一段xml:

<TableRow>
    <ImageView
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            android: layout_margin = "10dp"
            android: src = "@ drawable / icon_security" />
    <TextView
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            style = "@ style / DesignerTextStyle2"
            android: layout_gravity = "center_vertical"
            android: text = "@ string / welcome_security_calls" />
</ TableRow>

我需要将屏幕上特定图像(例如,它是屏幕上的第三个图像)的像素图像处理与著名图像(即该图像 - “@drawable/icon_security”)进行比较。

你能给我一个解决这个问题的例子吗?

最佳答案

这是我使用 URL 中的像素值来比较两个图像的 Java 代码

package imager;

import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import java.io.IOException;
import java.net.URL;
public class Imagecompare
{
    public static void main(String args[])
      {
        String s1;
        BufferedImage img1 = null;
        BufferedImage img2 = null;
        try {
          URL url1 = new URL("http://www.lac.inpe.br/JIPCookbook/Resources/ImageSimilarity/d02.jpg");
          URL url2 = new URL("http://www.lac.inpe.br/JIPCookbook/Resources/ImageSimilarity/s02.jpg");
          img1 = ImageIO.read(url1);
          img2 = ImageIO.read(url2);
        } catch (IOException e) {
          e.printStackTrace();
        }
        int width1 = img1.getWidth(null);
        int width2 = img2.getWidth(null);
        int height1 = img1.getHeight(null);
        int height2 = img2.getHeight(null);
        if ((width1 != width2) || (height1 != height2)) {
          System.err.println("Error: Images dimensions mismatch");
          System.exit(1);
        }
        long diff = 0;
        for (int y = 0; y < height1; y++) {
          for (int x = 0; x < width1; x++) {
            int rgb1 = img1.getRGB(x, y);
            int rgb2 = img2.getRGB(x, y);
            int r1 = (rgb1 >> 16) & 0xff;
            int g1 = (rgb1 >>  8) & 0xff;
            int b1 = (rgb1      ) & 0xff;
            int r2 = (rgb2 >> 16) & 0xff;
            int g2 = (rgb2 >>  8) & 0xff;
            int b2 = (rgb2      ) & 0xff;
            diff += Math.abs(r1 - r2);
            diff += Math.abs(g1 - g2);
            diff += Math.abs(b1 - b2);
          }
        }
        double n = width1 * height1 * 3;
        double p = diff / n / 255.0;
        double percnt = 100.0-(p*100.0);
        System.out.println("PERCENT: " +percnt);
      }

}

关于java 像素图像处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31695899/

相关文章:

image-processing - Scikit-image 扩展事件轮廓(蛇)

php裁剪非常大的图像

java - Java ME 中的 MD5 密码哈希

java - 方法引用 lambda 中的显式类型提示导致原始类型

java - 使用 Gson 访问名为 "class"的 JSON 值

android - 将我的 Android 设备与 Visual Studio 2015 RC 连接

java - 将空的 edittext 值设置为零

android - 在没有 ViewModel 的情况下使用 Room

image - MATLAB 中的拉普拉斯图像滤波和锐化图像

java - Android TCP 服务器客户端通信