麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發(fā)設(shè)計 > 正文

基于Java對圖片進行二值化處理

2019-11-14 20:59:18
字體:
供稿:網(wǎng)友
基于java對圖片進行二值化處理

一直以來對Java的圖形處理能力表無力,但好像又不是那么一回事,之前用php做過一些應(yīng)用,涉及到驗證碼的識別,其中有個圖片二值化的步驟,今天換成Java來實現(xiàn)下

在java的擴展包javax.imageio中為我們提供了一個類叫ImageIO,這個類提供了一些執(zhí)行簡單編碼和解碼的靜態(tài)便捷方法,具體說明大家可以翻下API看看

下面來說下關(guān)于圖片二值化的原理:

1、首先要獲取每個像素點的灰度值。

2、定義一個閥值。

3、將每個像素點的灰度值和它周圍的8個像素點的灰度值相疊加再除以9,然后和閥值進行比較。

4、大于閥值則設(shè)為黑色,小雨則為白色。

下面貼下具體代碼,注釋很全

  • separator是File類的一個常量,因年代久遠的關(guān)系,那時候的代碼規(guī)范沒有和現(xiàn)在一樣,常量必須大寫,屬于歷史遺留問題,不必太糾結(jié)(建議使用separator而不是"/",便于跨平臺) 。
  • BufferedImage里的getRGB得到的是一個ARGB,A代表透明,R代表紅色,G代表綠色,B代表藍色。
  • 包裝類Integer里的parseInt方法,第二個可選參數(shù)為"要處理幾進制的數(shù)"。
  • 關(guān)于閥值,網(wǎng)上有許多算法,有興趣的朋友可以自己研究下,這里我隨機給出了一個中間數(shù)130。
  • 關(guān)于圖片的灰度值,這里使用簡單的(R+G+B)/3。
 1 import java.awt.Color; 2 import java.awt.image.BufferedImage; 3 import java.io.File; 4 import java.io.IOException; 5  6 import javax.imageio.ImageIO; 7  8 public class ImageTest { 9 10     public static void main(String[] args) throws IOException {11         String filename = "D:" + File.separator + "/123.jpg";// separator是File里的一個常量,由于java歷史遺留問題故為小寫12         File file = new File(filename);13         BufferedImage bi = ImageIO.read(file);14         // 獲取當前圖片的高,寬,ARGB15         int h = bi.getHeight();16         int w = bi.getWidth();17         int rgb = bi.getRGB(0, 0);18         int arr[][] = new int[w][h];19 20         // 獲取圖片每一像素點的灰度值21         for (int i = 0; i < w; i++) {22             for (int j = 0; j < h; j++) {23                 // getRGB()返回默認的RGB顏色模型(十進制)24                 arr[i][j] = getImageRgb(bi.getRGB(i, j));//該點的灰度值25             }26 27         }28         29         BufferedImage bufferedImage=new BufferedImage(w, h, BufferedImage.TYPE_BYTE_BINARY);//  構(gòu)造一個類型為預(yù)定義圖像類型之一的 BufferedImage,TYPE_BYTE_BINARY(表示一個不透明的以字節(jié)打包的 1、2 或 4 位圖像。)30         int FZ=130;31         for (int i = 0; i < w; i++) {32             for (int j = 0; j < h; j++) {33                 if(getGray(arr,i,j,w,h)>FZ){34                     int black=new Color(255,255,255).getRGB();35                     bufferedImage.setRGB(i, j, black);36                 }else{37                     int white=new Color(0,0,0).getRGB();38                     bufferedImage.setRGB(i, j, white);39                 }40             }41             42         }43          ImageIO.write(bufferedImage, "jpg", new File("D:"+File.separator+"new123.jpg"));44     }45 46     PRivate static int getImageRgb(int i) {47         String argb = Integer.toHexString(i);// 將十進制的顏色值轉(zhuǎn)為十六進制48         // argb分別代表透明,紅,綠,藍 分別占16進制2位49         int r = Integer.parseInt(argb.substring(2, 4),16);//后面參數(shù)為使用進制50         int g = Integer.parseInt(argb.substring(4, 6),16);51         int b = Integer.parseInt(argb.substring(6, 8),16);52         int result=(int)((r+g+b)/3);53         return result;54     }55     56     57     58     //自己加周圍8個灰度值再除以9,算出其相對灰度值 59      public static int  getGray(int gray[][], int x, int y, int w, int h)  60         {  61             int rs = gray[x][y]  62                             + (x == 0 ? 255 : gray[x - 1][y])  63                             + (x == 0 || y == 0 ? 255 : gray[x - 1][y - 1])  64                             + (x == 0 || y == h - 1 ? 255 : gray[x - 1][y + 1])  65                             + (y == 0 ? 255 : gray[x][y - 1])  66                             + (y == h - 1 ? 255 : gray[x][y + 1])  67                             + (x == w - 1 ? 255 : gray[x + 1][ y])  68                             + (x == w - 1 || y == 0 ? 255 : gray[x + 1][y - 1])  69                             + (x == w - 1 || y == h - 1 ? 255 : gray[x + 1][y + 1]);  70             return rs / 9;  71         }  72 }

看下效果吧:


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 亚洲综合中文 | 欧美精品欧美极品欧美激情 | sm高h视频| 中文字幕一二三区芒果 | 成人午夜看片 | 成人免费一区二区三区在线观看 | 国产一区二区视频精品 | 精品国产一区二区三 | 成人性爱视频在线观看 | 国产一级www| 成人毛片网 | 250pp久久新 黄色网址免费在线播放 | 中文国产在线视频 | 91免费视频版 | 91久久99热青草国产 | 美女视频在线观看黄 | 在线成人一区二区 | 亚洲天堂在线电影 | 九九精品视频免费 | 久久靖品| 色七七亚洲 | 色av成人天堂桃色av | av成人在线电影 | 久草在线视频首页 | 精品国产一区在线 | 国产精品久久久久免费视频 | 中国免费黄色 | 手机视频在线播放 | chinese军人gay呻吟 | 91麻豆精品国产91久久久更新资源速度超快 | 国产精品成人久久久久a级 欧美特黄一级高清免费的香蕉 | 成年性羞羞视频免费观看无限 | 男女一边摸一边做羞羞视频免费 | 亚洲欧洲av在线 | 中文字幕涩涩久久乱小说 | 一级黄色欧美 | 激情夜色| 黄色高清免费 | 色婷婷久久一区二区 | 欧美成人一区免费视频 | 在线成人av观看 |