python實(shí)現(xiàn)灰度圖
本文實(shí)例為大家分享了python實(shí)現(xiàn)灰度圖的具體代碼,供大家參考,具體內(nèi)容如下
任務(wù)描述
背景
真彩色圖像和灰度圖像是數(shù)字圖像的兩種常見類型,如下圖所示,左圖是真彩色圖像,右圖是灰度圖像。
在真彩色圖像中,像素顏色是 RGB 顏色,每個(gè)顏色包含 R、G、B 三個(gè)顏色分量。而在灰度圖像中,像素顏色只有一個(gè)分量,稱為灰度值,其取值是 [0,255] 之間的整數(shù),灰度值越小,灰度越暗(越黑),反之越亮(越白)。
任務(wù)
本關(guān)任務(wù)是補(bǔ)全程序,使程序能將一幅真彩色圖像轉(zhuǎn)換成灰度圖像。說明如下:
1)求得的灰度值需要轉(zhuǎn)換成整數(shù),請(qǐng)使用round函數(shù)取整,如round(3.7)是將3.7四舍五入為整數(shù)4;
2)本關(guān)程序框架與上關(guān)基本相同。
相關(guān)知識(shí)
思路
真彩色圖像與灰度圖像采用的顏色模式不一樣,前者使用 RGB 顏色,有三個(gè)顏色分量,而后者使用灰度值,只有一個(gè)顏色分量,所以不能像上關(guān)一樣直接對(duì)原始圖像的像素進(jìn)行修改。
解決方法是先新建一個(gè)與真彩色圖像分辨率相同的純色灰度圖像,然后依次取出真彩色圖像中每個(gè)像素的 RGB 顏色,算出對(duì)應(yīng)的灰度值,再將此灰度值填入新建灰度圖像的對(duì)應(yīng)位置。
示例程序
示例程序見下:
from PIL import Image img = Image.new('L', (100, 100)) ?#新建一個(gè)3×3的純黑色灰度圖像 gray = img.getpixel((50,50)) ? ? ?#取出某個(gè)像素的顏色,即灰度值 print('這是一個(gè)灰度值:', gray) ? #灰度值只包含一個(gè)整數(shù) for x in range(100): ? ? for y in range(100): ? ? ? ? img.putpixel((x,y), 100)#將所有像素的灰度值設(shè)置為100 img.save('src/step2/student/step2_2.jpg')
可將此程序拷入右側(cè)編輯器運(yùn)行。
編程要求
在 Begin-End 區(qū)間補(bǔ)全代碼,具體要求見上。
測試說明
系統(tǒng)會(huì)檢查程序生成的 step2_2.jpg 文件,若正確則打?。?/p>
你的圖像與正確答案相同!
開始你的任務(wù)吧,祝你成功!
from PIL import Image # 將一個(gè)RGB顏色轉(zhuǎn)換成灰度值,結(jié)果保留整數(shù) def RGBtoGray(r, g, b): ? ? ########## Begin ########## ? ? gray = round(r*0.299 + g*0.587 + b*0.114) ? ? ########## End ########## ? ? return gray # 將真彩色圖像轉(zhuǎn)換成灰度圖 # 真彩色和灰度圖的文件路徑分別為path1和path2 def toGrayImage(path1, path2): ? ? img1 = Image.open(path1) ?# 真彩色圖像,像素中是RGB顏色 ? ? w, h = img1.size ? ? img2 = Image.new('L', (w, h)) ?# 新建一個(gè)灰度圖像,像素中是灰度值 ? ? ########## Begin ########## ? ? # 此部分功能:依次取出img1中每個(gè)像素的RGB顏色,轉(zhuǎn)換成灰度值,再放到img2的對(duì)應(yīng)位置 ? ? for x in range(w): ? ? ? ? for y in range(h): ? ? ? ? ? ? r, g, b = img1.getpixel((x, y)) ?# 取出顏色 ? ? ? ? ? ? gray = RGBtoGray(r, g, b) # 轉(zhuǎn)成灰度值 ? ? ? ? ? ? img2.putpixel((x, y), gray) ?# 放回像素 ? ? ########## End ########## ? ? img2.save(path2) path1 = 'step1.jpg' ?# 真彩色圖像 path2 = 'step2_2.jpg' ?# 灰度圖像 toGrayImage(path1, path2)
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- python opencv將圖片轉(zhuǎn)為灰度圖的方法示例
- python實(shí)現(xiàn)彩色圖轉(zhuǎn)換成灰度圖
- 對(duì)python cv2批量灰度圖片并保存的實(shí)例講解
- 利用Python將彩色圖像轉(zhuǎn)為灰度圖像的兩種方法
- Python讀取圖像并顯示灰度圖的實(shí)現(xiàn)
- Python 將RGB圖像轉(zhuǎn)換為Pytho灰度圖像的實(shí)例
- python-OpenCV 實(shí)現(xiàn)將數(shù)組轉(zhuǎn)換成灰度圖和彩圖
- python 對(duì)一幅灰度圖像進(jìn)行直方圖均衡化
- python?opencv實(shí)現(xiàn)灰度圖和彩色圖的互相轉(zhuǎn)換
- Python讀取MRI并顯示為灰度圖像實(shí)例代碼
相關(guān)文章
Python下載網(wǎng)絡(luò)小說實(shí)例代碼
這篇文章主要介紹了Python下載網(wǎng)絡(luò)小說實(shí)例代碼,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-02-02PyTorch里面的torch.nn.Parameter()詳解
今天小編就為大家分享一篇PyTorch里面的torch.nn.Parameter()詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-01-01利用pipenv和pyenv管理多個(gè)相互獨(dú)立的Python虛擬開發(fā)環(huán)境
這篇文章主要介紹了利用pipenv和pyenv管理多個(gè)相互獨(dú)立的Python虛擬開發(fā)環(huán)境,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11將Python代碼打包成.exe可執(zhí)行文件的完整步驟
這篇文章主要給大家介紹了關(guān)于如何將Python代碼打包成.exe可執(zhí)行文件的完整步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05Python正則表達(dá)式如何進(jìn)行字符串替換實(shí)例
Python正則表達(dá)式在使用中會(huì)經(jīng)常應(yīng)用到字符串替換的代碼。這篇文章主要介紹了Python正則表達(dá)式如何進(jìn)行字符串替換,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2016-12-12使用Pytorch+PyG實(shí)現(xiàn)MLP的詳細(xì)過程
圖神經(jīng)網(wǎng)絡(luò)是最近 AI 領(lǐng)域最熱門的方向之一,下面這篇文章主要給大家介紹了關(guān)于使用Pytorch+PyG實(shí)現(xiàn)MLP的詳細(xì)過程,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-03-03