「java图片二值化」java二值图像处理

博主:adminadmin 2023-01-03 20:12:07 969

今天给各位分享java图片二值化的知识,其中也会对java二值图像处理进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java把图片转换成二进制流

public static void main(String[] args) throws Exception {

File file = new File("d:\\L.jpg");//图片

FileInputStream fis = new FileInputStream(file);//把图片变成流

FileOutputStream fos = new FileOutputStream(new File("E:\\L.jpg"));  //把图片流写入E盘

byte[] read = new byte[1024]; //每次读取的字节 可以自己定义 256 512 1024  2048  等。。。

int len = 0;

while((len = fis.read(read))!= -1){  //读取变成流的图片

fos.write(read,0,len);//写入图片

}

fis.close();//关闭输入流

fos.close();//关闭输出流

}

急!!,二值化后的图像,用JAVA中值滤波算法,去除椒盐噪点!!!

椒盐噪声的话一般可以用中值滤波器去除, 中值滤波器很容易实现, 依此遍历图像中每个像素点, 每个像素点与其周围的8个点像素值做一下排序操作, 找到这九个点中的中值点赋给当前遍历点的像素就可以了, 算法很简单吧. 我这有c++的源码, 楼主要想要的话发邮件到我的邮箱769569350@qq.com我可以把程序发给你.

Java中如何把图片转换成二进制流

Java中将图片转为二进制流只需要使用FileImageInputStream取得图片文件,然后使用ByteArrayOutputStream 写入到二进制流中即可,下面是详细代码:

  //图片到byte数组

  public byte[] image2byte(String path){

    byte[] data = null;

    FileImageInputStream input = null;

    try {

      input = new FileImageInputStream(new File(path));

      ByteArrayOutputStream output = new ByteArrayOutputStream();

      byte[] buf = new byte[1024];

      int numBytesRead = 0;

      while ((numBytesRead = input.read(buf)) != -1) {

      output.write(buf, 0, numBytesRead);

      }

      data = output.toByteArray();

      output.close();

      input.close();

    }

    catch (FileNotFoundException ex1) {

      ex1.printStackTrace();

    }

    catch (IOException ex1) {

      ex1.printStackTrace();

    }

    return data;

  }

另外,如果需要将byte[]存回图片或转为String,则:

  //byte数组到图片

  public void byte2image(byte[] data,String path){

    if(data.length3||path.equals("")) return;

    try{

    FileImageOutputStream imageOutput = new FileImageOutputStream(new File(path));

    imageOutput.write(data, 0, data.length);

    imageOutput.close();

    System.out.println("Make Picture success,Please find image in " + path);

    } catch(Exception ex) {

      System.out.println("Exception: " + ex);

      ex.printStackTrace();

    }

  }

  //byte数组到16进制字符串

  public String byte2string(byte[] data){

    if(data==null||data.length=1) return "0x";

    if(data.length200000) return "0x";

    StringBuffer sb = new StringBuffer();

    int buf[] = new int[data.length];

    //byte数组转化成十进制

    for(int k=0;kdata.length;k++){

      buf[k] = data[k]0?(data[k]+256):(data[k]);

    }

    //十进制转化成十六进制

    for(int k=0;kbuf.length;k++){

      if(buf[k]16) sb.append("0"+Integer.toHexString(buf[k]));

      else sb.append(Integer.toHexString(buf[k]));

    }

    return "0x"+sb.toString().toUpperCase();

  }

java图片二值化的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java二值图像处理、java图片二值化的信息别忘了在本站进行查找喔。