真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Python的img函數(shù),python中image函數(shù)

怎么用python顯示一張圖片

在 python 中除了用 opencv,也可以用 matplotlib 和 PIL 這兩個(gè)庫(kù)操作圖片。本人偏愛(ài) matpoltlib,因?yàn)樗恼Z(yǔ)法更像 matlab。

專(zhuān)注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)豐鎮(zhèn)免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上千余家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

一、matplotlib

1. 顯示圖片

復(fù)制代碼

import matplotlib.pyplot as plt # plt 用于顯示圖片

import matplotlib.image as mpimg # mpimg 用于讀取圖片

import numpy as np

lena = mpimg.imread('lena.png') # 讀取和代碼處于同一目錄下的 lena.png

# 此時(shí) lena 就已經(jīng)是一個(gè) np.array 了,可以對(duì)它進(jìn)行任意處理

lena.shape #(512, 512, 3)

plt.imshow(lena) # 顯示圖片

plt.axis('off') # 不顯示坐標(biāo)軸

plt.show()

復(fù)制代碼

2. 顯示某個(gè)通道

復(fù)制代碼

# 顯示圖片的第一個(gè)通道

lena_1 = lena[:,:,0]

plt.imshow('lena_1')

plt.show()

# 此時(shí)會(huì)發(fā)現(xiàn)顯示的是熱量圖,不是我們預(yù)想的灰度圖,可以添加 cmap 參數(shù),有如下幾種添加方法:

plt.imshow('lena_1', cmap='Greys_r')

plt.show()

img = plt.imshow('lena_1')

img.set_cmap('gray') # 'hot' 是熱量圖

plt.show()

復(fù)制代碼

3. 將 RGB 轉(zhuǎn)為灰度圖

matplotlib 中沒(méi)有合適的函數(shù)可以將 RGB 圖轉(zhuǎn)換為灰度圖,可以根據(jù)公式自定義一個(gè):

復(fù)制代碼

def rgb2gray(rgb):

return np.dot(rgb[...,:3], [0.299, 0.587, 0.114])

gray = rgb2gray(lena)

# 也可以用 plt.imshow(gray, cmap = plt.get_cmap('gray'))

plt.imshow(gray, cmap='Greys_r')

plt.axis('off')

plt.show()

復(fù)制代碼

4. 對(duì)圖像進(jìn)行放縮

這里要用到 scipy

復(fù)制代碼

from scipy import misc

lena_new_sz = misc.imresize(lena, 0.5) # 第二個(gè)參數(shù)如果是整數(shù),則為百分比,如果是tuple,則為輸出圖像的尺寸

plt.imshow(lena_new_sz)

plt.axis('off')

plt.show()

復(fù)制代碼

5. 保存圖像

5.1 保存 matplotlib 畫(huà)出的圖像

該方法適用于保存任何 matplotlib 畫(huà)出的圖像,相當(dāng)于一個(gè) screencapture。

plt.imshow(lena_new_sz)

plt.axis('off')

plt.savefig('lena_new_sz.png')

5.2 將 array 保存為圖像

from scipy import misc

misc.imsave('lena_new_sz.png', lena_new_sz)

5.3 直接保存 array

讀取之后還是可以按照前面顯示數(shù)組的方法對(duì)圖像進(jìn)行顯示,這種方法完全不會(huì)對(duì)圖像質(zhì)量造成損失

np.save('lena_new_sz', lena_new_sz) # 會(huì)在保存的名字后面自動(dòng)加上.npy

img = np.load('lena_new_sz.npy') # 讀取前面保存的數(shù)組

二、PIL

1. 顯示圖片

from PIL import Image

im = Image.open('lena.png')

im.show()

2. 將 PIL Image 圖片轉(zhuǎn)換為 numpy 數(shù)組

im_array = np.array(im)

# 也可以用 np.asarray(im) 區(qū)別是 np.array() 是深拷貝,np.asarray() 是淺拷貝

3. 保存 PIL 圖片

直接調(diào)用 Image 類(lèi)的 save 方法

from PIL import Image

I = Image.open('lena.png')

I.save('new_lena.png')

4. 將 numpy 數(shù)組轉(zhuǎn)換為 PIL 圖片

這里采用 matplotlib.image 讀入圖片數(shù)組,注意這里讀入的數(shù)組是 float32 型的,范圍是 0-1,而 PIL.Image 數(shù)據(jù)是 uinit8 型的,范圍是0-255,所以要進(jìn)行轉(zhuǎn)換:

import matplotlib.image as mpimg

from PIL import Image

lena = mpimg.imread('lena.png') # 這里讀入的數(shù)據(jù)是 float32 型的,范圍是0-1

im = Image.fromarray(np.uinit8(lena*255))

im.show()

5. RGB 轉(zhuǎn)換為灰度圖

from PIL import Image

I = Image.open('lena.png')

I.show()

L = I.convert('L')

L.show()

如何用python取圖片輪廓

1、查找輪廓(find_contours)

measure模塊中的find_contours()函數(shù),可用來(lái)檢測(cè)二值圖像的邊緣輪廓。

函數(shù)原型為:

skimage.measure.find_contours(array,?level)

array: 一個(gè)二值數(shù)組圖像

level: 在圖像中查找輪廓的級(jí)別值

返回輪廓列表集合,可用for循環(huán)取出每一條輪廓。

例1:

import?numpy?as?np

import?matplotlib.pyplot?as?plt

from?skimage?import?measure,draw?

#生成二值測(cè)試圖像

img=np.zeros([100,100])

img[20:40,60:80]=1??#矩形

rr,cc=draw.circle(60,60,10)??#小圓

rr1,cc1=draw.circle(20,30,15)?#大圓

img[rr,cc]=1

img[rr1,cc1]=1

#檢測(cè)所有圖形的輪廓

contours?=?measure.find_contours(img,?0.5)

#繪制輪廓

fig,?(ax0,ax1)?=?plt.subplots(1,2,figsize=(8,8))

ax0.imshow(img,plt.cm.gray)

ax1.imshow(img,plt.cm.gray)

for?n,?contour?in?enumerate(contours):

ax1.plot(contour[:,?1],?contour[:,?0],?linewidth=2)

ax1.axis('image')

ax1.set_xticks([])

ax1.set_yticks([])

plt.show()

結(jié)果如下:不同的輪廓用不同的顏色顯示

在調(diào)用一些Python里的函數(shù)的時(shí)候 為什么有些函數(shù)需要實(shí)例化有些不需要?

如果一個(gè)方法是靜態(tài)方法或類(lèi)方法,那么,可以直接調(diào)用。

如果一個(gè)方法不是靜態(tài)的,那么,它會(huì)需要self來(lái)訪問(wèn)實(shí)例中的某些屬性,那么就只能在實(shí)例上調(diào)用。

你給出的代碼中,tensor_trans = transforms.ToTensor()這一句,實(shí)際上只是簡(jiǎn)化引用,并沒(méi)有實(shí)例化transforms。

作為示例:

class MyUtil(object):

....@staticmethod

....def fn1():

........return 'a'

....def fn2(self):

........return 'b'

對(duì)方法fn1,我們可以直接調(diào)用:

x = MyUtil.fn1()

但對(duì)于fn2,則只能實(shí)例化后調(diào)用:

util=MyUtil()

x = util.fn2()

當(dāng)然,對(duì)于fn1,也可以在實(shí)例上調(diào)用:

util=MyUtil()

x = util.fn1()

python如何保存img文件

python保存img文件有兩種方法:

1、使用matplotlib模塊的“matplotlib.image.imsave()”函數(shù)可以保存圖片

示例代碼如下:

2、使用opencv模塊“opencv.imwrite()”函數(shù)可以保存圖片

、

更多Python知識(shí),請(qǐng)關(guān)注:Python自學(xué)網(wǎng)??!

python圖像處理初學(xué)者求助

Pillow是Python里的圖像處理庫(kù)(PIL:Python Image Library),提供了了廣泛的文件格式支持,強(qiáng)大的圖像處理能力,主要包括圖像儲(chǔ)存、圖像顯示、格式轉(zhuǎn)換以及基本的圖像處理操作等。

1)使用 Image 類(lèi)

PIL最重要的類(lèi)是 Image class, 你可以通過(guò)多種方法創(chuàng)建這個(gè)類(lèi)的實(shí)例;你可以從文件加載圖像,或者處理其他圖像, 或者從 scratch 創(chuàng)建。

要從文件加載圖像,可以使用open( )函數(shù),在Image模塊中:

1

2

from PIL import Image

im = Image.open("E:/photoshop/1.jpg")

加載成功后,將返回一個(gè)Image對(duì)象,可以通過(guò)使用示例屬性查看文件內(nèi)容:

1

2

3

print(im.format, im.size, im.mode)

('JPEG', (600, 351), 'RGB')

format 這個(gè)屬性標(biāo)識(shí)了圖像來(lái)源。如果圖像不是從文件讀取它的值就是None。size屬性是一個(gè)二元tuple,包含width和height(寬度和高度,單位都是px)。 mode 屬性定義了圖像bands的數(shù)量和名稱(chēng),以及像素類(lèi)型和深度。常見(jiàn)的modes 有 “L” (luminance) 表示灰度圖像, “RGB” 表示真彩色圖像, and “CMYK” 表示出版圖像。

如果文件打開(kāi)錯(cuò)誤,返回 IOError 錯(cuò)誤。

只要你有了 Image 類(lèi)的實(shí)例,你就可以通過(guò)類(lèi)的方法處理圖像。比如,下列方法可以顯示圖像:

1

im.show()

2)讀寫(xiě)圖像

PIL 模塊支持大量圖片格式。使用在 Image 模塊的 open() 函數(shù)從磁盤(pán)讀取文件。你不需要知道文件格式就能打開(kāi)它,這個(gè)庫(kù)能夠根據(jù)文件內(nèi)容自動(dòng)確定文件格式。要保存文件,使用 Image 類(lèi)的 save() 方法。保存文件的時(shí)候文件名變得重要了。除非你指定格式,否則這個(gè)庫(kù)將會(huì)以文件名的擴(kuò)展名作為格式保存。

加載文件,并轉(zhuǎn)化為png格式:

1

2

3

4

5

6

7

8

9

10

11

12

13

"Python Image Library Test"

from PIL import Image

import os

import sys

for infile in sys.argv[1:]:

f,e = os.path.splitext(infile)

outfile = f +".png"

if infile != outfile:

try:

Image.open(infile).save(outfile)

except IOError:

print("Cannot convert", infile)

save() 方法的第二個(gè)參數(shù)可以指定文件格式。

3)創(chuàng)建縮略圖

縮略圖是網(wǎng)絡(luò)開(kāi)發(fā)或圖像軟件預(yù)覽常用的一種基本技術(shù),使用Python的Pillow圖像庫(kù)可以很方便的建立縮略圖,如下:

1

2

3

4

5

6

7

# create thumbnail

size = (128,128)

for infile in glob.glob("E:/photoshop/*.jpg"):

f, ext = os.path.splitext(infile)

img = Image.open(infile)

img.thumbnail(size,Image.ANTIALIAS)

img.save(f+".thumbnail","JPEG")

上段代碼對(duì)photoshop下的jpg圖像文件全部創(chuàng)建縮略圖,并保存,glob模塊是一種智能化的文件名匹配技術(shù),在批圖像處理中經(jīng)常會(huì)用到。

注意:Pillow庫(kù)不會(huì)直接解碼或者加載圖像柵格數(shù)據(jù)。當(dāng)你打開(kāi)一個(gè)文件,只會(huì)讀取文件頭信息用來(lái)確定格式,顏色模式,大小等等,文件的剩余部分不會(huì)主動(dòng)處理。這意味著打開(kāi)一個(gè)圖像文件的操作十分快速,跟圖片大小和壓縮方式無(wú)關(guān)。

4)圖像的剪切、粘貼與合并操作

Image 類(lèi)包含的方法允許你操作圖像部分選區(qū),PIL.Image.Image.crop 方法獲取圖像的一個(gè)子矩形選區(qū),如:

1

2

3

4

# crop, paste and merge

im = Image.open("E:/photoshop/lena.jpg")

box = (100,100,300,300)

region = im.crop(box)

矩形選區(qū)有一個(gè)4元元組定義,分別表示左、上、右、下的坐標(biāo)。這個(gè)庫(kù)以左上角為坐標(biāo)原點(diǎn),單位是px,所以上訴代碼復(fù)制了一個(gè) 200×200 pixels 的矩形選區(qū)。這個(gè)選區(qū)現(xiàn)在可以被處理并且粘貼到原圖。

1

2

region = region.transpose(Image.ROTATE_180)

im.paste(region, box)

當(dāng)你粘貼矩形選區(qū)的時(shí)候必須保證尺寸一致。此外,矩形選區(qū)不能在圖像外。然而你不必保證矩形選區(qū)和原圖的顏色模式一致,因?yàn)榫匦芜x區(qū)會(huì)被自動(dòng)轉(zhuǎn)換顏色。

5)分離和合并顏色通道

對(duì)于多通道圖像,有時(shí)候在處理時(shí)希望能夠分別對(duì)每個(gè)通道處理,處理完成后重新合成多通道,在Pillow中,很簡(jiǎn)單,如下:

1

2

r,g,b = im.split()

im = Image.merge("RGB", (r,g,b))

對(duì)于split( )函數(shù),如果是單通道的,則返回其本身,否則,返回各個(gè)通道。

6)幾何變換

對(duì)圖像進(jìn)行幾何變換是一種基本處理,在Pillow中包括resize( )和rotate( ),如用法如下:

1

2

out = im.resize((128,128))

out = im.rotate(45) # degree conter-clockwise

其中,resize( )函數(shù)的參數(shù)是一個(gè)新圖像大小的元祖,而rotate( )則需要輸入順時(shí)針的旋轉(zhuǎn)角度。在Pillow中,對(duì)于一些常見(jiàn)的旋轉(zhuǎn)作了專(zhuān)門(mén)的定義:

1

2

3

4

5

out = im.transpose(Image.FLIP_LEFT_RIGHT)

out = im.transpose(Image.FLIP_TOP_BOTTOM)

out = im.transpose(Image.ROTATE_90)

out = im.transpose(Image.ROTATE_180)

out = im.transpose(Image.ROTATE_270)

7)顏色空間變換

在處理圖像時(shí),根據(jù)需要進(jìn)行顏色空間的轉(zhuǎn)換,如將彩色轉(zhuǎn)換為灰度:

1

2

cmyk = im.convert("CMYK")

gray = im.convert("L")

8)圖像濾波


文章名稱(chēng):Python的img函數(shù),python中image函數(shù)
本文網(wǎng)址:http://weahome.cn/article/dscigpd.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部