Java數(shù)字圖像處理之圖像灰度處理
本文實(shí)例為大家分享了Java數(shù)字圖像處理基礎(chǔ)之圖像灰度處理,供大家參考,具體內(nèi)容如下
一、簡(jiǎn)介
圖像灰度化處理可以作為圖像處理的預(yù)處理步驟,在圖像處理中是十分重要的一件事?;叶葓D像上每個(gè)像素的顏色值又稱為灰度,指黑白圖像中點(diǎn)的顏色深度,范圍一般從0到255,白色為255,黑色為0。
灰度轉(zhuǎn)換公式:
int gray = (int)(color.getRed() * 0.299 + color.getGreen() * 0.587 + color.getBlue() *0.114);
我們只是需要把每個(gè)像素點(diǎn)都轉(zhuǎn)化為灰度值,就可實(shí)現(xiàn)圖像的灰度轉(zhuǎn)化;
二、代碼演示
import javax.imageio.ImageIO; import javax.swing.*; import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; public class ImageGray extends Canvas { ? ? JFrame jframe = new JFrame("圖像灰度處理"); ? ? BufferedImage bufferedImage,bufferedImage_end ; ? ? Image image,image_end; ? ? public ImageGray(){ ? ? ? ? try { ? ? ? ? ? ? bufferedImage = ImageIO.read(new File("D:\\EDge下載地址\\lena.jpg")); ? ? ? ? } catch (IOException e) { ? ? ? ? ? ? e.printStackTrace(); ? ? ? ? } ? ? ? ? jframe.setLayout(null); ? ? ? ? // 定義位置 ? ? ? ? jframe.setBounds(200,200,800,600); ? ? ? ? this.setBounds(0,0,800,600); ? ? ? ? jframe.add(this); ? ? ? ? jframe.setVisible(true); ? ? } ? ? @Override ? ? public void paint(Graphics g) { ? ? ? ? image =(Image)bufferedImage; ? ? ? ? image_end =(Image)gray(bufferedImage); ? ? ? ? g.drawImage(image,0,0,null); ?// 顯示原圖 ? ? ? ? g.drawLine(350,10,350,600); ? ?// 中間的線 ? ? ? ? g.drawImage(image_end,370,0,null); ?// 顯示灰度圖片 ? ? } ? ? // 灰度處理,把原圖傳進(jìn)去,傳出來(lái)為修改后的圖 ? ? public BufferedImage gray(BufferedImage b){ ? ? ? ? int width = b.getWidth(); ? ? ? ? int height =b.getHeight(); ? ? ? ? // 下面這個(gè)別忘了定義,不然會(huì)出錯(cuò) ? ? ? ? bufferedImage_end = new BufferedImage(width,height, BufferedImage.TYPE_3BYTE_BGR ); ? ? ? ? // 雙層循環(huán)更改圖片的RGB值,把得到的灰度值存到bufferedImage_end中,然后返回bufferedImage_end ? ? ? ? for (int y = 0; y < height; y++) { ? ? ? ? ? ? for (int x = 0; x < width; x++) { ? ? ? ? ? ? ? ? // 獲取到(x,y)此像素點(diǎn)的Colo,轉(zhuǎn)化為灰度 ? ? ? ? ? ? ? ? Color color = new Color(bufferedImage.getRGB(x,y)); ? ? ? ? ? ? ? ? int gray = (int)(color.getRed() * 0.299 + color.getGreen() * 0.587 + color.getBlue() *0.114); ? ? ? ? ? ? ? ? Color color_end = new Color(gray,gray,gray); ? ? ? ? ? ? ? ? bufferedImage_end.setRGB(x,y,color_end.getRGB()); ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? return bufferedImage_end; ? ? } ? ? public static void main(String[] args) { ? ? ? ? new ImageGray(); ? ? } }
三、結(jié)果演示
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
IDEA報(bào)錯(cuò):java?找不到符號(hào)圖文解決過(guò)程
這篇文章主要給大家介紹了關(guān)于IDEA報(bào)錯(cuò):java?找不到符號(hào)解決的相關(guān)資料,運(yùn)行項(xiàng)目時(shí)Idea報(bào)錯(cuò),提示找不到符號(hào),但是這個(gè)類(lèi)在項(xiàng)目里是存在的,網(wǎng)上找了很多文章都沒(méi)解決,浪費(fèi)了一個(gè)下午終于弄好了,記錄一下,需要的朋友可以參考下2023-08-08IDEA代碼熱部署和熱加載的三種實(shí)現(xiàn)方案
在日常開(kāi)發(fā)中,我們需要經(jīng)常修改 Java 代碼,手動(dòng)重啟項(xiàng)目,查看修改后的效果,如果在項(xiàng)目小時(shí),重啟速度比較快,等待的時(shí)間是較短的,我們可以使用代碼熱加載和熱部署解決該問(wèn)題,本文給大家介紹了三種實(shí)現(xiàn)方案,需要的朋友可以參考下2023-11-11Java中的ArrayList.trimToSize()方法詳解
這篇文章主要介紹了Java中的ArrayList.trimToSize()方法詳解,前幾天看了Java?ArrayList,沒(méi)有明白trimToSize()這個(gè)方法是什么意思,所以看了一下源碼并且debug一下自己的一個(gè)例子,明白了其中的含義,需要的朋友可以參考下2023-11-11MyEclipse整合ssh三大框架環(huán)境搭載用戶注冊(cè)源碼下載
這篇文章主要為大家詳細(xì)介紹了如何使用MyEclipse整合ssh三大框架進(jìn)行環(huán)境搭載,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10Java常用流程控制語(yǔ)句實(shí)現(xiàn)原理解析
這篇文章主要介紹了Java常用流程控制語(yǔ)句實(shí)現(xiàn)原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08Java synchronized鎖升級(jí)jol過(guò)程詳解
這篇文章主要介紹了Java synchronized鎖升級(jí)jol過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04Java均攤復(fù)雜度和防止復(fù)雜度的震蕩原理分析
這篇文章主要介紹了Java均攤復(fù)雜度和防止復(fù)雜度的震蕩,結(jié)合實(shí)例形式分析了Java均攤復(fù)雜度和防止復(fù)雜度的震蕩相關(guān)概念、原理、實(shí)現(xiàn)方法與注意事項(xiàng),需要的朋友可以參考下2020-03-03Layui前后臺(tái)交互數(shù)據(jù)獲取java實(shí)例
下面小編就為大家分享一篇Layui前后臺(tái)交互數(shù)據(jù)獲取java實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-01-01從java反編譯及字節(jié)碼角度探索分析String拼接字符串效率
這篇文章主要介紹了從java反編譯及字節(jié)碼角度探索分析String拼接字符串效率,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12