Java數(shù)字圖像處理之圖像灰度處理
本文實例為大家分享了Java數(shù)字圖像處理基礎(chǔ)之圖像灰度處理,供大家參考,具體內(nèi)容如下
一、簡介
圖像灰度化處理可以作為圖像處理的預(yù)處理步驟,在圖像處理中是十分重要的一件事?;叶葓D像上每個像素的顏色值又稱為灰度,指黑白圖像中點的顏色深度,范圍一般從0到255,白色為255,黑色為0。
灰度轉(zhuǎn)換公式:
int gray = (int)(color.getRed() * 0.299 + color.getGreen() * 0.587 + color.getBlue() *0.114);
我們只是需要把每個像素點都轉(zhuǎn)化為灰度值,就可實現(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)去,傳出來為修改后的圖
? ? public BufferedImage gray(BufferedImage b){
? ? ? ? int width = b.getWidth();
? ? ? ? int height =b.getHeight();
? ? ? ? // 下面這個別忘了定義,不然會出錯
? ? ? ? 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)此像素點的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é)果演示

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
詳解springboot通過Async注解實現(xiàn)異步任務(wù)及回調(diào)的方法
這篇文章主要介紹了springboot通過Async注解實現(xiàn)異步任務(wù)及回調(diào),文中通過一個簡單示例來直觀的理解什么是同步調(diào)用,在單元測試用例中,注入?SyncTask?對象,并在測試用例中執(zhí)行?doTaskOne(),doTaskTwo(),doTaskThree()?三個方法,具體實現(xiàn)方式跟隨小編一起看看吧2022-05-05
SpringBoot攔截器實現(xiàn)對404和500等錯誤的攔截
本篇文章主要介紹了SpringBoot攔截器實現(xiàn)對404和500等錯誤的攔截,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-04-04
Java中JDom解析XML_動力節(jié)點Java學(xué)院整理
JDOM是一種解析XML的Java工具包。DOM適合于當(dāng)今流行的各種語言,包括Java,JavaScripte,VB,VBScript,Perl,C,C++等。下面通過本文給大家介紹Java中JDom解析XML的方法,感興趣的朋友一起學(xué)習(xí)吧2017-07-07
MyBatis框架實現(xiàn)一個簡單的數(shù)據(jù)查詢操作
本文介紹了MyBatis框架下進(jìn)行數(shù)據(jù)查詢操作的詳細(xì)步驟,括創(chuàng)建實體類、編寫SQL標(biāo)簽、配置Mapper、開啟駝峰命名映射以及執(zhí)行SQL語句等,感興趣的可以了解一下2024-12-12
Java 負(fù)載均衡的 5 種算法實現(xiàn)原理
這篇文章主要介紹Java 負(fù)載均衡的 5 種算法實現(xiàn)原理,負(fù)載均衡能夠平均分配客戶請求到服 務(wù)器陣列,借此提供快速獲取重要數(shù)據(jù),解決大量并發(fā)訪問服務(wù)問題,這種集群技術(shù)可以用最少的投資獲得接近于大型主機(jī)的性能。下面就來看看文章的具體內(nèi)容吧2021-10-10
SpringBoot+Druid開啟監(jiān)控頁面的實現(xiàn)示例
本文主要介紹了SpringBoot+Druid開啟監(jiān)控頁面的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-06-06

