java像素图像处理
Android的Java应用程序。下面是一段xml:java像素图像处理,java,android,image-processing,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 /
<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”)进行比较
你能给我看一个解决这个问题的例子吗?这是
Java
代码,我使用URL
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.awt.image.buffereImage;
导入javax.imageio.imageio;
导入java.io.IOException;
导入java.net.URL;
公共类图像比较
{
公共静态void main(字符串参数[])
{
字符串s1;
BuffereImage img1=null;
BuffereImage img2=null;
试一试{
URL url1=新URL(“http://www.lac.inpe.br/JIPCookbook/Resources/ImageSimilarity/d02.jpg");
URL url2=新URL(“http://www.lac.inpe.br/JIPCookbook/Resources/ImageSimilarity/s02.jpg");
img1=ImageIO.read(url1);
img2=图像IO.read(url2);
}捕获(IOE异常){
e、 printStackTrace();
}
int-width1=img1.getWidth(null);
int-width2=img2.getWidth(null);
int height1=img1.getHeight(null);
int height2=img2.getHeight(null);
如果((宽度1!=宽度2)| |(高度1!=高度2)){
System.err.println(“错误:图像尺寸不匹配”);
系统出口(1);
}
长差=0;
对于(int y=0;y>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;
微分+=数学绝对值(r1-r2);
微分+=数学绝对值(g1-g2);
微分+=数学abs(b1-b2);
}
}
双n=宽度1*高度1*3;
双p=diff/n/255.0;
双percnt=100.0-(p*100.0);
系统输出打印项次(“百分比:+percnt”);
}
}
您希望使用像素值比较图像吗?比较相等还是相似?你能更具体一点吗?比较绝对平等