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

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

python圖像相關(guān)函數(shù) python圖像處理

python:PIL圖像處理

PIL (Python Imaging Library)

站在用戶的角度思考問題,與客戶深入溝通,找到鎮(zhèn)雄網(wǎng)站設(shè)計與鎮(zhèn)雄網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名與空間、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋鎮(zhèn)雄地區(qū)。

Python圖像處理庫,該庫支持多種文件格式,提供強大的圖像處理功能。

PIL中最重要的類是Image類,該類在Image模塊中定義。

從文件加載圖像:

如果成功,這個函數(shù)返回一個Image對象。現(xiàn)在你可以使用該對象的屬性來探索文件的內(nèi)容。

format 屬性指定了圖像文件的格式,如果圖像不是從文件中加載的則為 None 。

size 屬性是一個2個元素的元組,包含圖像寬度和高度(像素)。

mode 屬性定義了像素格式,常用的像素格式為:“L” (luminance) - 灰度圖, “RGB” , “CMYK”。

如果文件打開失敗, 將拋出IOError異常。

一旦你擁有一個Image類的實例,你就可以用該類定義的方法操作圖像。比如:顯示

( show() 的標(biāo)準(zhǔn)實現(xiàn)不是很有效率,因為它將圖像保存到一個臨時文件,然后調(diào)用外部工具(比如系統(tǒng)的默認圖片查看軟件)顯示圖像。該函數(shù)將是一個非常方便的調(diào)試和測試工具。)

接下來的部分展示了該庫提供的不同功能。

PIL支持多種圖像格式。從磁盤中讀取文件,只需使用 Image 模塊中的 open 函數(shù)。不需要提供文件的圖像格式。PIL庫將根據(jù)文件內(nèi)容自動檢測。

如果要保存到文件,使用 Image 模塊中的 save 函數(shù)。當(dāng)保存文件時,文件名很重要,除非指定格式,否則PIL庫將根據(jù)文件的擴展名來決定使用哪種格式保存。

** 轉(zhuǎn)換文件到JPEG **

save 函數(shù)的第二個參數(shù)可以指定使用的文件格式。如果文件名中使用了一個非標(biāo)準(zhǔn)的擴展名,則必須通過第二個參數(shù)來指定文件格式。

** 創(chuàng)建JPEG縮略圖 **

需要注意的是,PIL只有在需要的時候才加載像素數(shù)據(jù)。當(dāng)你打開一個文件時,PIL只是讀取文件頭獲得文件格式、圖像模式、圖像大小等屬性,而像素數(shù)據(jù)只有在需要的時候才會加載。

這意味著打開一個圖像文件是一個非??斓牟僮鳎粫芪募笮『蛪嚎s算法類型的影響。

** 獲得圖像信息 **

Image 類提供了某些方法,可以操作圖像的子區(qū)域。提取圖像的某個子區(qū)域,使用 crop() 函數(shù)。

** 復(fù)制圖像的子區(qū)域 **

定義區(qū)域使用一個包含4個元素的元組,(left, upper, right, lower)。坐標(biāo)原點位于左上角。上面的例子提取的子區(qū)域包含300x300個像素。

該區(qū)域可以做接下來的處理然后再粘貼回去。

** 處理子區(qū)域然后粘貼回去 **

當(dāng)往回粘貼時,區(qū)域的大小必須和參數(shù)匹配。另外區(qū)域不能超出圖像的邊界。然而原圖像和區(qū)域的顏色模式無需匹配。區(qū)域會自動轉(zhuǎn)換。

** 滾動圖像 **

paste() 函數(shù)有個可選參數(shù),接受一個掩碼圖像。掩碼中255表示指定位置為不透明,0表示粘貼的圖像完全透明,中間的值表示不同級別的透明度。

PIL允許分別操作多通道圖像的每個通道,比如RGB圖像。 split() 函數(shù)創(chuàng)建一個圖像集合,每個圖像包含一個通道。 merge() 函數(shù)接受一個顏色模式和一個圖像元組,然后將它們合并為一個新的圖像。接下來的例子交換了一個RGB圖像的三個通道。

** 分離和合并圖像通道 **

對于單通道圖像, split() 函數(shù)返回圖像本身。如果想處理各個顏色通道,你可能需要先將圖像轉(zhuǎn)為RGB模式。

resize() 函數(shù)接受一個元組,指定圖像的新大小。

rotate() 函數(shù)接受一個角度值,逆時針旋轉(zhuǎn)。

** 基本幾何變換 **

圖像旋轉(zhuǎn)90度也可以使用 transpose() 函數(shù)。 transpose() 函數(shù)也可以水平或垂直翻轉(zhuǎn)圖像。

** transpose **

transpose() 和 rotate() 函數(shù)在性能和結(jié)果上沒有區(qū)別。

更通用的圖像變換函數(shù)為 transform() 。

PIL可以轉(zhuǎn)換圖像的像素模式。

** 轉(zhuǎn)換顏色模式 **

PIL庫支持從其他模式轉(zhuǎn)為“L”或“RGB”模式,其他模式之間轉(zhuǎn)換,則需要使用一個中間圖像,通常是“RGB”圖像。

ImageFilter 模塊包含多個預(yù)定義的圖像增強過濾器用于 filter() 函數(shù)。

** 應(yīng)用過濾器 **

point() 函數(shù)用于操作圖像的像素值。該函數(shù)通常需要傳入一個函數(shù)對象,用于操作圖像的每個像素:

** 應(yīng)用點操作 **

使用以上技術(shù)可以快速地對圖像像素應(yīng)用任何簡單的表達式。可以結(jié)合 point() 函數(shù)和 paste 函數(shù)修改圖像。

** 處理圖像的各個通道 **

注意用于創(chuàng)建掩碼圖像的語法:

Python計算邏輯表達式采用短路方式,即:如果and運算符左側(cè)為false,就不再計算and右側(cè)的表達式,而且返回結(jié)果是表達式的結(jié)果。比如 a and b 如果a為false則返回a,如果a為true則返回b,詳見Python語法。

對于更多高級的圖像增強功能,可以使用 ImageEnhance 模塊中的類。

可以調(diào)整圖像對比度、亮度、色彩平衡、銳度等。

** 增強圖像 **

PIL庫包含對圖像序列(動畫格式)的基本支持。支持的序列格式包括 FLI/FLC 、 GIF 和一些實驗性的格式。 TIFF 文件也可以包含多個幀。

當(dāng)打開一個序列文件時,PIL庫自動加載第一幀。你可以使用 seek() 函數(shù) tell() 函數(shù)在不同幀之間移動。

** 讀取序列 **

如例子中展示的,當(dāng)序列到達結(jié)尾時,將拋出EOFError異常。

注意當(dāng)前版本的庫中多數(shù)底層驅(qū)動只允許seek到下一幀。如果想回到前面的幀,只能重新打開圖像。

以下迭代器類允許在for語句中循環(huán)遍歷序列:

** 一個序列迭代器類 **

PIL庫包含一些函數(shù)用于將圖像、文本打印到Postscript打印機。以下是一個簡單的例子。

** 打印到Postscript **

如前所述,可以使用 open() 函數(shù)打開圖像文件,通常傳入一個文件名作為參數(shù):

如果打開成功,返回一個Image對象,否則拋出IOError異常。

也可以使用一個file-like object代替文件名(暫可以理解為文件句柄)。該對象必須實現(xiàn)read,seek,tell函數(shù),必須以二進制模式打開。

** 從文件句柄打開圖像 **

如果從字符串?dāng)?shù)據(jù)中讀取圖像,使用StringIO類:

** 從字符串中讀取 **

如果圖像文件內(nèi)嵌在一個大文件里,比如 tar 文件中??梢允褂肅ontainerIO或TarIO模塊來訪問。

** 從tar文檔中讀取 **

** 該小節(jié)不太理解,請參考原文 **

有些解碼器允許當(dāng)讀取文件時操作圖像。通常用于在創(chuàng)建縮略圖時加速解碼(當(dāng)速度比質(zhì)量重要時)和輸出一個灰度圖到激光打印機時。

draft() 函數(shù)。

** Reading in draft mode **

輸出類似以下內(nèi)容:

注意結(jié)果圖像可能不會和請求的模式和大小匹配。如果要確保圖像不大于指定的大小,請使用 thumbnail 函數(shù)。

Python2.7 教程 PIL

Python 之 使用 PIL 庫做圖像處理

來自

python處理圖片數(shù)據(jù)?

生成一張純色的圖片

先設(shè)置圖片的顏色,接著利用Image模塊的new方法新生成一張圖片,png格式的圖片需要設(shè)置成rgba,類似的還有rgb,L(灰度圖等),尺寸設(shè)定為640,480,這個可以根據(jù)自己的情況設(shè)定,顏色同樣如此。

批量生成圖片

上面生成了一張圖片,那要生成十張圖片呢,這種步驟一樣,只是顏色改變的,利用循環(huán)就可以解決。首先創(chuàng)建一個顏色列表,把要生成的圖片顏色放進去。接著循環(huán)獲取不同的顏色,保存的時候利用字符串拼接的方法改變圖片的名字。

本地生成的圖片

封裝成函數(shù)

前面的方法已經(jīng)可以批量生成圖片了,為了通用性強一點,我們可以封裝成函數(shù),把哪些可以改變的參數(shù)單獨抽離出來。尺寸也同樣,使用的時候,可以根據(jù)自己的需要定義顏色列表和尺寸。當(dāng)然還有加一些提示用語和報錯兼容性,這里就不講了。

本地生成的圖片

Python如何圖像識別?

1. 簡介。

圖像處理是一門應(yīng)用非常廣的技術(shù),而擁有非常豐富第三方擴展庫的 Python 當(dāng)然不會錯過這一門盛宴。PIL (Python Imaging Library)是 Python 中最常用的圖像處理庫,目前版本為 1.1.7,我們可以?在這里?下載學(xué)習(xí)和查找資料。

Image 類是 PIL 庫中一個非常重要的類,通過這個類來創(chuàng)建實例可以有直接載入圖像文件,讀取處理過的圖像和通過抓取的方法得到的圖像這三種方法。

2. 使用。

導(dǎo)入 Image 模塊。然后通過 Image 類中的 open 方法即可載入一個圖像文件。如果載入文件失敗,則會引起一個 IOError ;若無返回錯誤,則 open 函數(shù)返回一個 Image 對象。現(xiàn)在,我們可以通過一些對象屬性來檢查文件內(nèi)容,即:

1 import Image

2 ? im = Image.open("j.jpg")

3 ? print im.format, im.size, im.mode

4 JPEG (440, 330) RGB

這里有三個屬性,我們逐一了解。

format : 識別圖像的源格式,如果該文件不是從文件中讀取的,則被置為 None 值。

size : 返回的一個元組,有兩個元素,其值為象素意義上的寬和高。

mode : RGB(true color image),此外還有,L(luminance),CMTK(pre-press image)。

現(xiàn)在,我們可以使用一些在 Image 類中定義的方法來操作已讀取的圖像實例。比如,顯示最新載入的圖像:

1 im.show()

2 ?

輸出原圖:

3. 函數(shù)概貌。

3.1 ? ?Reading and Writing Images : open( infilename ) , save( outfilename )

3.2 ? ?Cutting and Pasting and Merging Images :

crop() : 從圖像中提取出某個矩形大小的圖像。它接收一個四元素的元組作為參數(shù),各元素為(left, upper, right, lower),坐標(biāo)系統(tǒng)的原點(0, 0)是左上角。

paste() :

merge() :

1 box = (100, 100, 200, 200)

2 ? region = im.crop(box)

3 ? region.show()

4 ? region = region.transpose(Image.ROTATE_180)

5 ? region.show()

6 ? im.paste(region, box)

7 ? im.show()

其效果圖為:

旋轉(zhuǎn)一幅圖片:

1 def roll(image, delta):

2 ?? ?"Roll an image sideways"

3

4 ?? ?xsize, ysize = image.size

5

6 ?? ?delta = delta % xsize

7 ?? ?if delta == 0: return image

8

9 ?? ?part1 = image.crop((0, 0, delta, ysize))

10 ?? ?part2 = image.crop((delta, 0, xsize, ysize))

11 ?? ?image.paste(part2, (0, 0, xsize-delta, ysize))

12 ?? ?image.paste(part1, (xsize-delta, 0, xsize, ysize))

13

14 ?? ?return image

3.3 ? ?幾何變換。

3.3.1 ? ?簡單的幾何變換。

1 out = im.resize((128, 128)) ? ? ? ? ? ? ? ? ? ? #

2 ?out = im.rotate(45) ? ? ? ? ? ? ? ? ? ? ? ? ? ??#逆時針旋轉(zhuǎn) 45 度角。

3 ?out = im.transpose(Image.FLIP_LEFT_RIGHT) ? ? ? #左右對換。

4 ?out = im.transpose(Image.FLIP_TOP_BOTTOM) ? ? ? #上下對換。

5 ?out = im.transpose(Image.ROTATE_90) ? ? ? ? ? ? #旋轉(zhuǎn) 90 度角。

6 ?out = im.transpose(Image.ROTATE_180) ? ? ? ? ? ?#旋轉(zhuǎn) 180 度角。

7 out = im.transpose(Image.ROTATE_270) ? ? ? ? ? ?#旋轉(zhuǎn) 270 度角。

各個調(diào)整之后的圖像為:

圖片1:

圖片2:

圖片3:

圖片4:

3.3.2 ? ?色彩空間變換。

convert() : 該函數(shù)可以用來將圖像轉(zhuǎn)換為不同色彩模式。

3.3.3 ? ?圖像增強。

Filters : 在 ImageFilter 模塊中可以使用 filter 函數(shù)來使用模塊中一系列預(yù)定義的增強濾鏡。

1 import ImageFilter

2 imfilter = im.filter(ImageFilter.DETAIL)

3 imfilter.show()

3.4 ? ?序列圖像。

即我們常見到的動態(tài)圖,最常見的后綴為 .gif ,另外還有 FLI / FLC 。PIL 庫對這種動畫格式圖也提供了一些基本的支持。當(dāng)我們打開這類圖像文件時,PIL 自動載入圖像的第一幀。我們可以使用 seek 和 tell 方法在各幀之間移動。

1 import Image

2 im.seek(1) ? ? ? ?# skip to the second frame

3

4 try:

5 ?? ?while 1:

6 ?? ? ? ?im.seek( im.tell() + 1)

7 ?? ? ? ?# do something to im

8 except EOFError:

9 ?? ?pass

3.5 ? ?更多關(guān)于圖像文件的讀取。

最基本的方式:im = Image.open("filename")

類文件讀?。篺p = open("filename", "rb"); im = Image.open(fp)

字符串?dāng)?shù)據(jù)讀?。篿mport StringIO; im = Image.open(StringIO.StringIO(buffer))

從歸檔文件讀?。篿mport TarIO; fp = TarIo.TarIO("Image.tar", "Image/test/lena.ppm"); im = Image.open(fp)

基本的 PIL 目前就練習(xí)到這里。其他函數(shù)的功能可點擊?這里?進一步閱讀。


本文題目:python圖像相關(guān)函數(shù) python圖像處理
文章路徑:http://weahome.cn/article/dodpjsh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部