第一次图像取反

第一次图像取反_第1张图片
图一 原图片
第一次图像取反_第2张图片
图二 取反后的图片

最近买了一本opencv-android方面的书打算学习学习,也未来以后毕业写论文做打算,想到了刚开始学习中一些处理方法是很简单的自己可以直接实现,就尝试了一下,由于Java基础不牢固,对着API文档才找到了这几个接口。下面说几个问题,希望看到的伙伴可以解答
1.jpg采用了压缩格式,照片的实际大小小于照片的高度宽度位深;
2.读取的jpg文件和存取的文件大小不一样,就仅仅对数据进行了取反;

public class Reverse {
/*直接抛异常/
public static void main(String[] args) throws FileNotFoundException, IOException {
/*读取源文件/
File src = new File(“.//Drawable//258663-105.jpg”);
if(!src.exists()){
System.err.println(src.getAbsolutePath()+” is no exists!”);
return;
}
FileInputStream fis = new FileInputStream(src);
BufferedImage bfImage = ImageIO.read(fis);

    int width = bfImage.getWidth();
    int height = bfImage.getHeight();
    System.out.println("照片的信息:");
    System.out.println("宽度----"+width);
    System.out.println("高度----"+height);
    System.out.println("格式----"+(bfImage.getType()==5? "TYPE_3BYTE_BGR" :""+bfImage.getType()));
    System.out.println("文件大小----"+src.length()/1024+"KB");

    /**修改*/
    for(int i=0;i< height;i++){
        for(int j=0;j< width ;j++){
            int data = bfImage.getRGB(j, i);
            int[] datas = new int[4];
            datas[0] = (int) ((data>>24) & 0XFF);
            datas[1] = (int) ((data>>16) & 0XFF);
            datas[2] = (int) ((data>>8) & 0XFF);
            datas[3] = (int) ((data) & 0XFF);
            int[] newdatas = new int[4];

            /**在这里取反*/
            for( int x=1;x

}

你可能感兴趣的:(opencv学习笔记)