欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中關于matplotlib圖片的灰度處理方式

 更新時間:2023年08月15日 17:02:17   作者:小闊愛_data  
這篇文章主要介紹了Python中關于matplotlib圖片的灰度處理方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

Python中matplotlib圖片的灰度處理

環(huán)境是ubuntu中的jupyter的環(huán)境

圖像的灰度化處理的基本原理

將彩色圖像轉化成為灰度圖像的過程成為圖像的灰度化處理。

為什么要進行灰度化處理

彩色圖像中的每個像素的顏色有R、G、B三個分量決定,而每個分量有255中值可取,這樣一個像素點可以有1600多萬(255*255*255)的顏色的變化范圍。

而灰度圖像是R、G、B三個分量相同的一種特殊的彩色圖像,其一個像素點的變化范圍為255種,所以在數(shù)字圖像處理種一般先將各種格式的圖像轉變成灰度圖像以使后續(xù)的圖像的計算量變得少一些。

灰度圖像的描述與彩色圖像一樣仍然反映了整幅圖像的整體和局部的色度和亮度等級的分布和特征。

圖像的灰度化處理可用三種方法來實現(xiàn)。

常見的三種方法

  • 先對數(shù)據(jù)進行基本的處理
#引入包
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
#讀取文件
zhima=plt.imread('芝麻.jpg')
plt.imshow(zhima)
#轉變需要的類型,并且產(chǎn)生噪聲,顯示最后的圖片
zhima_noisy=zhima.copy().astype(float)
zhima_noisy+=zhima_noisy.std()*0.3*np.random.standard_normal(zhima_noisy.shape)
plt.imshow(zhima_noisy)
#查看形狀
zhima.shape
#輸出結果為:(662, 1000, 3)
  • 平均值法
#聚合操作后就減少了一個維度了
zhima_mean=zhima.mean(axis=2)
zhima_mean.shape
#輸出結果為:(662, 1000)
plt.imshow(zhima_mean,cmap='gray')
  • 最大值法
#最大值法
zhima_max=zhima.max(axis=-1)
zhima_max.shape
plt.imshow(zhima_max,cmap='gray')
  • RGB三原色法
gravity= np.array([0.299,0.587,0.114])
#red*0.299+green*0.587+blue*0.114
#矩陣乘法
zhima_gravity=np.dot(zhima,gravity)
zhima_gravity.shape
plt.imshow(zhima_gravity,cmap='gray')

Matplotlib顯示灰度圖

matplotlib中的imshow()函數(shù)不能自動顯示灰度圖像,這一點應該是眾所周知的,需要調用cmap=“gray"以進行設置,但是cmap="gray"實際上并不是如opencv中的imshow函數(shù)一樣將單通道圖顯示為灰度圖,私以為是引入了灰度圖的灰度量化概念,但并不直接對應灰度,證明見正文。

測試

設置一全1.0的圖像(全白),和一全白背景疊加黑色條柱的圖像,使用plt.imshow()顯示。

代碼:

import matplotlib.pyplot as plt
import numpy as np
white=np.ones((100,100),dtype=float)
bar=np.ones((100,100),dtype=float)
bar[40:50,:]=0
plt.figure(1)
plt.subplot(211)
plt.imshow(white,cmap='gray')
plt.title('white map')
plt.subplot(212)
plt.imshow(bar,cmap='gray')
plt.title('black bar')

結果為:

由此可以發(fā)現(xiàn)在值全為1.0時,圖像顯示為黑色,那么是否是dtype的原因呢?測試常用的uint8情況下,亮度為恒定值,顯示幾何。

代碼為:

white1=np.ones((100,100),dtype=np.uint8)*255
white2=np.ones((100,100),dtype=np.uint8)*128
plt.figure((2))
plt.subplot(211)
plt.imshow(white1,cmap='gray')
plt.title('white1')
plt.subplot(212)
plt.imshow(white2,cmap='gray')
plt.title('white2')

結果為:

由此可以確定,這一顯示“異常”與數(shù)據(jù)類型無關 。

解決方案

使用vmin,vmax參數(shù)指定灰度范圍,或者設定cmap為gray_r以使得灰度范圍反轉,后者只適用于想顯示白色背景。

代碼:

white1=np.ones((100,100),dtype=np.uint8)*255
white2=np.ones((100,100),dtype=np.uint8)*128
plt.figure((2))
plt.subplot(211)
plt.imshow(white1,cmap='gray_r')
plt.title('white1')
plt.subplot(212)
plt.imshow(white2,cmap='gray',vmin=0,vmax=255)
plt.title('white2')

結果:

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 在Python代碼中執(zhí)行Linux命令的詳細用法教程

    在Python代碼中執(zhí)行Linux命令的詳細用法教程

    在Python開發(fā)過程中,經(jīng)常需要執(zhí)行Linux系統(tǒng)命令來完成各種任務,Python提供了多種方式來調用和執(zhí)行系統(tǒng)命令,本文將詳細介紹如何在Python代碼中執(zhí)行Linux命令,并結合實際案例來演示這些方法的使用,需要的朋友可以參考下
    2024-07-07
  • 在centos7中分布式部署pyspider

    在centos7中分布式部署pyspider

    PySpider:一個國人編寫的強大的網(wǎng)絡爬蟲系統(tǒng)并帶有強大的WebUI。采用Python語言編寫,分布式架構,支持多種數(shù)據(jù)庫后端,強大的WebUI支持腳本編輯器,任務監(jiān)視器,項目管理器以及結果查看器。
    2017-05-05
  • Python根據(jù)服務獲取端口號的方法

    Python根據(jù)服務獲取端口號的方法

    這篇文章主要介紹了Python根據(jù)服務獲取端口號,文中給大家提到了linux查看端口開啟端口的方法,需要的朋友可以參考下
    2019-09-09
  • python讀取excel進行遍歷/xlrd模塊操作

    python讀取excel進行遍歷/xlrd模塊操作

    這篇文章主要介紹了python讀取excel進行遍歷/xlrd模塊操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • 教你用Python寫一個植物大戰(zhàn)僵尸小游戲

    教你用Python寫一個植物大戰(zhàn)僵尸小游戲

    這篇文章主要介紹了教你用Python寫一個植物大戰(zhàn)僵尸小游戲,文中有非常詳細的代碼示例,對正在學習python的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • Python中使用asyncio 封裝文件讀寫

    Python中使用asyncio 封裝文件讀寫

    本文主要給大家簡單講解如何用 asyncio.Future 對象來封裝文件的異步讀寫。有需要的小伙伴可以參考下
    2016-09-09
  • Python實現(xiàn)豆瓣圖片下載的方法

    Python實現(xiàn)豆瓣圖片下載的方法

    這篇文章主要介紹了Python實現(xiàn)豆瓣圖片下載的方法,涉及Python針對網(wǎng)頁操作的相關技巧,需要的朋友可以參考下
    2015-05-05
  • python 如何設置柱狀圖參數(shù)

    python 如何設置柱狀圖參數(shù)

    這篇文章主要介紹了在python中設置柱狀圖參數(shù)的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • 解決Python3用PIL的ImageFont輸出中文亂碼的問題

    解決Python3用PIL的ImageFont輸出中文亂碼的問題

    今天小編大家分享一篇解決Python3用PIL的ImageFont輸出中文亂碼的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • pygame實現(xiàn)雷電游戲雛形開發(fā)

    pygame實現(xiàn)雷電游戲雛形開發(fā)

    這篇文章主要為大家詳細介紹了pygame實現(xiàn)雷電游戲開發(fā)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11

最新評論