亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

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

2019-11-14 20:59:18
字體:
來源:轉載
供稿:網友
基于java對圖片進行二值化處理

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

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

下面來說下關于圖片二值化的原理:

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

2、定義一個閥值。

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

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

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

  • separator是File類的一個常量,因年代久遠的關系,那時候的代碼規范沒有和現在一樣,常量必須大寫,屬于歷史遺留問題,不必太糾結(建議使用separator而不是"/",便于跨平臺) 。
  • BufferedImage里的getRGB得到的是一個ARGB,A代表透明,R代表紅色,G代表綠色,B代表藍色。
  • 包裝類Integer里的parseInt方法,第二個可選參數為"要處理幾進制的數"。
  • 關于閥值,網上有許多算法,有興趣的朋友可以自己研究下,這里我隨機給出了一個中間數130。
  • 關于圖片的灰度值,這里使用簡單的(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);//  構造一個類型為預定義圖像類型之一的 BufferedImage,TYPE_BYTE_BINARY(表示一個不透明的以字節打包的 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);// 將十進制的顏色值轉為十六進制48         // argb分別代表透明,紅,綠,藍 分別占16進制2位49         int r = Integer.parseInt(argb.substring(2, 4),16);//后面參數為使用進制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 }

看下效果吧:


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩一区二区福利| 日韩欧美a级成人黄色| 97精品欧美一区二区三区| 亚洲一区二区三区香蕉| 日韩欧美一区二区在线| 91亚洲精品在线观看| 亚洲a区在线视频| 国内精品国产三级国产在线专| 久久国产精品免费视频| 久久av在线看| 91精品国产综合久久香蕉922| 久久中文字幕一区| 国产一区红桃视频| 国产小视频国产精品| 精品国产1区2区| 欧美激情网站在线观看| 久热精品视频在线| 久久久久久亚洲精品中文字幕| 国产精品成人免费视频| 国产美女精彩久久| 欧美丰满少妇xxxx| 欧美日韩国产影院| 亚洲三级av在线| xvideos亚洲人网站| 国产精品老牛影院在线观看| 日韩中文字幕网| 91精品国产91久久久久| 91欧美视频网站| 狠狠色香婷婷久久亚洲精品| 国产做受高潮69| 亚洲欧美自拍一区| 亚洲免费一在线| 中文字幕日韩综合av| 国产偷国产偷亚洲清高网站| 日本免费在线精品| 国产成人一区二区| 亚洲欧美在线免费观看| 亚洲欧美一区二区精品久久久| 成人免费视频网址| 久久在线视频在线| 国产精品久久久久久一区二区| 欧美日韩国产一区中文午夜| 国产一区二区三区高清在线观看| 88国产精品欧美一区二区三区| 欧美激情精品久久久久久大尺度| 国产精品丝袜一区二区三区| 亚洲午夜精品久久久久久久久久久久| 亚洲美女av在线| 都市激情亚洲色图| 最新69国产成人精品视频免费| 在线观看91久久久久久| 国产精品久久久999| 亚洲乱码一区二区| 国产成人91久久精品| 亚洲www在线| 欧美成在线视频| 日韩在线免费av| 国产精品福利观看| 亚洲图片制服诱惑| 精品视频在线播放色网色视频| 色婷婷av一区二区三区在线观看| 欧美成人三级视频网站| 91wwwcom在线观看| 欧美黑人国产人伦爽爽爽| 91精品久久久久久久久中文字幕| 影音先锋日韩有码| 国产精品稀缺呦系列在线| 777777777亚洲妇女| 成人午夜小视频| 国语自产偷拍精品视频偷| 亚洲欧美激情另类校园| 亚洲精品在线看| 国产精品久久久久久久久男| 久久九九国产精品怡红院| 亚洲激情免费观看| 亚洲国产中文字幕在线观看| 久久久久国产精品免费网站| 成人黄在线观看| 精品中文字幕在线| 午夜精品久久久久久99热软件| 欧美一区三区三区高中清蜜桃| 欧美激情三级免费| 亚洲国产精品va在线| 懂色av中文一区二区三区天美| 国产精品久久久久久av下载红粉| 国产欧美亚洲视频| 欧美老肥婆性猛交视频| 国产精品视频大全| 日韩视频在线一区| 伊人久久精品视频| 欧美成人在线影院| 亚洲精品免费在线视频| 亚洲综合色激情五月| 日韩人在线观看| 国产精品电影一区| 欧美精品一区在线播放| 亚洲欧美在线播放| 成人黄色av网站| 日韩欧美第一页| 亚洲成人久久电影| 91国语精品自产拍在线观看性色| 精品小视频在线| 亚洲国产欧美一区二区三区久久| 一区二区三区动漫| 国产精品扒开腿做爽爽爽视频| 国产成人一区二区三区小说| 国产美女扒开尿口久久久| 国产精品黄色影片导航在线观看| 欧美日本高清视频| 亚洲第一国产精品| 欧美激情免费观看| 国产精品中文久久久久久久| 91中文字幕在线| 国产精品最新在线观看| 欧美丰满少妇xxxx| 亚洲tv在线观看| 日本一区二区三区四区视频| 欧美壮男野外gaytube| 成人在线免费观看视视频| 91亚洲va在线va天堂va国| 国产一区私人高清影院| 91免费的视频在线播放| 欧美裸体视频网站| 成人网在线免费观看| 欧美交受高潮1| 亚洲激情在线观看视频免费| 亚洲九九九在线观看| 最近免费中文字幕视频2019| 欧美国产日本高清在线| 国产一区二区三区免费视频| 国外成人在线视频| 国语自产精品视频在线看一大j8| 久久久久久九九九| 浅井舞香一区二区| 国产精品视频一区国模私拍| 伊人伊成久久人综合网站| 中文字幕免费国产精品| 成人免费观看网址| 国产精品久久久久久超碰| 亚洲视频在线播放| 高清视频欧美一级| 国产日韩在线播放| 久久视频这里只有精品| 福利精品视频在线| 久久久999精品视频| 午夜精品美女自拍福到在线| 欧美性猛交99久久久久99按摩| 在线中文字幕日韩| 91免费欧美精品| 91精品国产高清自在线| 日韩黄色高清视频| 亚洲精品网址在线观看| 性色av一区二区三区在线观看| 国产精品福利在线观看| 日韩精品视频中文在线观看| 亚洲美女免费精品视频在线观看| 欧美中文字幕视频在线观看| 欧美精品中文字幕一区| 91美女片黄在线观| 在线观看日韩专区| 日韩成人xxxx| 色香阁99久久精品久久久| 国产精品观看在线亚洲人成网| 久久精品成人欧美大片|