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

python數(shù)字圖像處理圖像的繪制詳解

 更新時(shí)間:2022年06月28日 15:54:45   作者:denny402  
這篇文章主要為大家介紹了python數(shù)字圖像處理圖像的繪制示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

正文

實(shí)際上前面我們就已經(jīng)用到了圖像的繪制,如:

io.imshow(img)  

這一行代碼的實(shí)質(zhì)是利用matplotlib包對圖片進(jìn)行繪制,繪制成功后,返回一個(gè)matplotlib類型的數(shù)據(jù)。因此,我們也可以這樣寫:

import matplotlib.pyplot as plt
plt.imshow(img)

imshow()函數(shù)格式為:

matplotlib.pyplot.imshow(X, cmap=None)

X: 要繪制的圖像或數(shù)組。

cmap: 顏色圖譜(colormap), 默認(rèn)繪制為RGB(A)顏色空間。

其它可選的顏色圖譜如下列表:

顏色圖譜描述
autumn紅-橙-黃
bone黑-白,x線
cool青-洋紅
copper黑-銅
flag紅-白-藍(lán)-黑
gray黑-白
hot黑-紅-黃-白
hsvhsv顏色空間, 紅-黃-綠-青-藍(lán)-洋紅-紅
inferno黑-紅-黃
jet藍(lán)-青-黃-紅
magma黑-紅-白
pink黑-粉-白
plasma綠-紅-黃
prism 紅-黃-綠-藍(lán)-紫-...-綠模式
spring洋紅-黃
summer綠-黃
viridis藍(lán)-綠-黃
winter藍(lán)-綠

用的比較多的有g(shù)ray,jet等,如:

plt.imshow(image,plt.cm.gray)
plt.imshow(img,cmap=plt.cm.jet)

在窗口上繪制完圖片后,返回一個(gè)AxesImage對象。要在窗口上顯示這個(gè)對象,我們可以調(diào)用show()函數(shù)來進(jìn)行顯示,但進(jìn)行練習(xí)的時(shí)候(ipython環(huán)境中),一般我們可以省略show()函數(shù),也能自動(dòng)顯示出來。

from skimage import io,data
img=data.astronaut()
dst=io.imshow(img)
print(type(dst))
io.show()

顯示為:

可以看到,類型是'matplotlib.image.AxesImage'。顯示一張圖片,我們通常更愿意這樣寫:

import matplotlib.pyplot as plt
from skimage import io,data
img=data.astronaut()
plt.imshow(img)
plt.show()

matplotlib是一個(gè)專業(yè)繪圖的庫,相當(dāng)于matlab中的plot,可以設(shè)置多個(gè)figure窗口,設(shè)置figure的標(biāo)題,隱藏坐標(biāo)尺,甚至可以使用subplot在一個(gè)figure中顯示多張圖片。一般我們可以這樣導(dǎo)入matplotlib庫:

import matplotlib.pyplot as plt

也就是說,我們繪圖實(shí)際上用的是matplotlib包的pyplot模塊。

一、用figure函數(shù)和subplot函數(shù)分別創(chuàng)建主窗口與子圖

例:分開并同時(shí)顯示宇航員圖片的三個(gè)通道

from skimage import data
import matplotlib.pyplot as plt
img=data.astronaut()
plt.figure(num='astronaut',figsize=(8,8))  #創(chuàng)建一個(gè)名為astronaut的窗口,并設(shè)置大小 
plt.subplot(2,2,1)     #將窗口分為兩行兩列四個(gè)子圖,則可顯示四幅圖片
plt.title('origin image')   #第一幅圖片標(biāo)題
plt.imshow(img)      #繪制第一幅圖片
plt.subplot(2,2,2)     #第二個(gè)子圖
plt.title('R channel')   #第二幅圖片標(biāo)題
plt.imshow(img[:,:,0],plt.cm.gray)      #繪制第二幅圖片,且為灰度圖
plt.axis('off')     #不顯示坐標(biāo)尺寸
plt.subplot(2,2,3)     #第三個(gè)子圖
plt.title('G channel')   #第三幅圖片標(biāo)題
plt.imshow(img[:,:,1],plt.cm.gray)      #繪制第三幅圖片,且為灰度圖
plt.axis('off')     #不顯示坐標(biāo)尺寸
plt.subplot(2,2,4)     #第四個(gè)子圖
plt.title('B channel')   #第四幅圖片標(biāo)題
plt.imshow(img[:,:,2],plt.cm.gray)      #繪制第四幅圖片,且為灰度圖
plt.axis('off')     #不顯示坐標(biāo)尺寸
plt.show()   #顯示窗口

在圖片繪制過程中,我們用matplotlib.pyplot模塊下的figure()函數(shù)來創(chuàng)建顯示窗口,該函數(shù)的格式為:

matplotlib.pyplot.figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None)

所有參數(shù)都是可選的,都有默認(rèn)值,因此調(diào)用該函數(shù)時(shí)可以不帶任何參數(shù),其中:

num: 整型或字符型都可以。如果設(shè)置為整型,則該整型數(shù)字表示窗口的序號。如果設(shè)置為字符型,則該字符串表示窗口的名稱。用該參數(shù)來命名窗口,如果兩個(gè)窗口序號或名相同,則后一個(gè)窗口會(huì)覆蓋前一個(gè)窗口。

figsize: 設(shè)置窗口大小。是一個(gè)tuple型的整數(shù),如figsize=(8,8)

dpi: 整形數(shù)字,表示窗口的分辨率。

facecolor: 窗口的背景顏色。

edgecolor: 窗口的邊框顏色。

用figure()函數(shù)創(chuàng)建的窗口,只能顯示一幅圖片,如果想要顯示多幅圖片,則需要將這個(gè)窗口再劃分為幾個(gè)子圖,在每個(gè)子圖中顯示不同的圖片。我們可以使用subplot()函數(shù)來劃分子圖,函數(shù)格式為:

matplotlib.pyplot.subplot(nrows, ncols, plot_number)

nrows: 子圖的行數(shù)。

ncols: 子圖的列數(shù)。

plot_number: 當(dāng)前子圖的編號。

如:

plt.subplot(2,2,1)

則表示將figure窗口劃分成了2行2列共4個(gè)子圖,當(dāng)前為第1個(gè)子圖。我們有時(shí)也可以用這種寫法:

plt.subplot(221)

兩種寫法效果是一樣的。每個(gè)子圖的標(biāo)題可用title()函數(shù)來設(shè)置,是否使用坐標(biāo)尺可用axis()函數(shù)來設(shè)置,如:

plt.subplot(221)
plt.title("first subwindow")
plt.axis('off')

二、用subplots來創(chuàng)建顯示窗口與劃分子圖

除了上面那種方法創(chuàng)建顯示窗口和劃分子圖,還有另外一種編寫方法也可以,如下例: 

import matplotlib.pyplot as plt
from skimage import data,color
img = data.immunohistochemistry()
hsv = color.rgb2hsv(img)
fig, axes = plt.subplots(2, 2, figsize=(7, 6))
ax0, ax1, ax2, ax3 = axes.ravel()
ax0.imshow(img)
ax0.set_title("Original image")
ax1.imshow(hsv[:, :, 0], cmap=plt.cm.gray)
ax1.set_title("H")
ax2.imshow(hsv[:, :, 1], cmap=plt.cm.gray)
ax2.set_title("S")
ax3.imshow(hsv[:, :, 2], cmap=plt.cm.gray)
ax3.set_title("V")
for ax in axes.ravel():
    ax.axis('off')
fig.tight_layout()  #自動(dòng)調(diào)整subplot間的參數(shù)

直接用subplots()函數(shù)來創(chuàng)建并劃分窗口。注意,比前面的subplot()函數(shù)多了一個(gè)s,該函數(shù)格式為:

matplotlib.pyplot.subplots(nrows=1, ncols=1)

nrows: 所有子圖行數(shù),默認(rèn)為1。

ncols: 所有子圖列數(shù),默認(rèn)為1。

返回一個(gè)窗口figure, 和一個(gè)tuple型的ax對象,該對象包含所有的子圖,可結(jié)合ravel()函數(shù)列出所有子圖,如:

fig, axes = plt.subplots(2, 2, figsize=(7, 6))
ax0, ax1, ax2, ax3 = axes.ravel()

創(chuàng)建了2行2列4個(gè)子圖,分別取名為ax0,ax1,ax2和ax3, 每個(gè)子圖的標(biāo)題用set_title()函數(shù)來設(shè)置,如:

ax0.imshow(img)
ax0.set_title("Original image")

如果有多個(gè)子圖,我們還可以使用tight_layout()函數(shù)來調(diào)整顯示的布局,該函數(shù)格式為:

matplotlib.pyplot.tight_layout(pad=1.08, h_pad=None, w_pad=None, rect=None)

所有的參數(shù)都是可選的,調(diào)用該函數(shù)時(shí)可省略所有的參數(shù)。

pad: 主窗口邊緣和子圖邊緣間的間距,默認(rèn)為1.08

h_pad, w_pad: 子圖邊緣之間的間距,默認(rèn)為 pad_inches

rect: 一個(gè)矩形區(qū)域,如果設(shè)置這個(gè)值,則將所有的子圖調(diào)整到這個(gè)矩形區(qū)域內(nèi)。

一般調(diào)用為:

plt.tight_layout()  #自動(dòng)調(diào)整subplot間的參數(shù)

三、其它方法繪圖并顯示

除了使用matplotlib庫來繪制圖片,skimage還有另一個(gè)子模塊viewer,也提供一個(gè)函數(shù)來顯示圖片。不同的是,它利用Qt工具來創(chuàng)建一塊畫布,從而在畫布上繪制圖像。

例:

from skimage import data
from skimage.viewer import ImageViewer
img = data.coins()
viewer = ImageViewer(img)
viewer.show()

最后總結(jié)一下,繪制和顯示圖片常用到的函數(shù)有:

函數(shù)名功能調(diào)用格式
figure創(chuàng)建一個(gè)顯示窗口plt.figure(num=1,figsize=(8,8)
imshow繪制圖片plt.imshow(image)
show顯示窗口plt.show()
subplot劃分子圖plt.subplot(2,2,1)
title設(shè)置子圖標(biāo)題(與subplot結(jié)合使用)plt.title('origin image')
axis是否顯示坐標(biāo)尺plt.axis('off')
subplots創(chuàng)建帶有多個(gè)子圖的窗口fig,axes=plt.subplots(2,2,figsize=(8,8))
ravel為每個(gè)子圖設(shè)置變量ax0,ax1,ax2,ax3=axes.ravel()
set_title設(shè)置子圖標(biāo)題(與axes結(jié)合使用)ax0.set_title('first window')
tight_layout自動(dòng)調(diào)整子圖顯示布局plt.tight_layout()

以上就是python數(shù)字圖像處理圖像的繪制詳解的詳細(xì)內(nèi)容,更多關(guān)于python數(shù)字圖像處理繪制的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python遺傳算法之geatpy的深入理解

    python遺傳算法之geatpy的深入理解

    本文主要介紹了python遺傳算法之geatpy的深入理解,主要從geatpy中的各種數(shù)據(jù)結(jié)構(gòu)一步一步進(jìn)行學(xué)習(xí),具有一定的參考價(jià)值,感興趣的可以了解一下
    2022-04-04
  • python實(shí)現(xiàn)二分查找算法

    python實(shí)現(xiàn)二分查找算法

    這篇文章主要介紹了python如何實(shí)現(xiàn)二分查找算法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下。
    2020-09-09
  • Python3開發(fā)環(huán)境搭建詳細(xì)教程

    Python3開發(fā)環(huán)境搭建詳細(xì)教程

    這篇文章主要介紹了Python3開發(fā)環(huán)境搭建詳細(xì)教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Python中bisect模塊與堆操作詳解

    Python中bisect模塊與堆操作詳解

    在Python中,bisect和heapq都是處理有序序列的常見模塊,這篇文章將分別介紹這兩個(gè)模塊的用法和實(shí)現(xiàn)方式,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-06-06
  • Python實(shí)現(xiàn)樹莓派WiFi斷線自動(dòng)重連的實(shí)例代碼

    Python實(shí)現(xiàn)樹莓派WiFi斷線自動(dòng)重連的實(shí)例代碼

    實(shí)現(xiàn) WiFi 斷線自動(dòng)重連,原理是用 Python 監(jiān)測網(wǎng)絡(luò)是否斷線,如果斷線則重啟網(wǎng)絡(luò)服務(wù)。接下來給大家分享實(shí)現(xiàn)代碼,需要的朋友參考下
    2017-03-03
  • 淺談Python中的作用域規(guī)則和閉包

    淺談Python中的作用域規(guī)則和閉包

    本文簡單講解了PYTHON的閉包,作用域的基本知識配合實(shí)例簡單明了,適合初學(xué)者
    2018-03-03
  • python實(shí)現(xiàn)電腦操控安卓手機(jī)

    python實(shí)現(xiàn)電腦操控安卓手機(jī)

    網(wǎng)上雖然有很多教程,但是隨著版本的更新總有各種各樣的坑,本文以親身踏坑經(jīng)歷介紹了電腦使用python操控安卓手機(jī),從安裝到使用方法,感興趣的可以了解一下
    2021-05-05
  • Pycharm的Available Packages為空的解決方法

    Pycharm的Available Packages為空的解決方法

    這篇文章主要介紹了Pycharm的Available Packages為空的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • python和C語言混合編程實(shí)例

    python和C語言混合編程實(shí)例

    這篇文章主要介紹了python和C語言混合編程實(shí)例,文中開發(fā)了一個(gè)tcp端口ping程序來介紹混合編程,需要的朋友可以參考下
    2014-06-06
  • Python求字符串的長度示例代碼

    Python求字符串的長度示例代碼

    這篇文章主要介紹了Python求字符串的長度,求一個(gè)字符串的長度,在main函數(shù)中輸入字符串,并輸出其長度,文中給大家介紹了Python計(jì)算字符串長度的函數(shù),需要的朋友可以參考下
    2023-02-02

最新評論