導航:首頁 > 編程語言 > python提取圖片紅色部分

python提取圖片紅色部分

發布時間:2023-07-17 11:42:22

1. 請教各位大神,如何用python提取出兩幅圖像中不同的部分

用PIL新建一個圖像。然後遍歷兩個圖片每個像素的顏色信息,不一樣的點加到新建的圖像上面最後保存圖片不就行了。。

2. 基於python語言的opencv如何把圖片中指定區域截取出來

3-切割輪廓

(這是我網站找的一篇 blog, 親測有效)

3. 如何用python分別提取出某個像素的rgb值並寫入一個一行三列的數組中。

可以使用 Python Image Library 做,load() 函數會返回一個對象,這個對象我們可以把它當作一個二維數組對待,而數組中存放的就是點的 RGB 值,可以很容易地訪問到任何像素點的 RGB 值:

fromPILimportImage

#可以支持很多種圖片格式.
im=Image.open("your_picture.jpg")
pix=im.load()

#獲得圖片的尺度,可以用於迭代
printim.size

#獲得某個像素點的RGB值,像素點坐標由[x,y]指定
printpix[x,y]

#設置[x,y]點的RGB的值為value
pix[x,y]=value

4. python:PIL圖像處理

PIL (Python Imaging Library)

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

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

從文件載入圖像:

如果成功,這個函數返回一個Image對象。現在你可以使用該對象的屬性來探索文件的內容。

format 屬性指定了圖像文件的格式,如果圖像不是從文件中載入的則為 None 。
size 屬性是一個2個元素的元組,包含圖像寬度和高度(像素)。
mode 屬性定義了像素格式,常用的像素格式為:「L」 (luminance) - 灰度圖, 「RGB」 , 「CMYK」。

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

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

( show() 的標准實現不是很有效率,因為它將圖像保存到一個臨時文件,然後調用外部工具(比如系統的默認圖片查看軟體)顯示圖像。該函數將是一個非常方便的調試和測試工具。)

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

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

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

** 轉換文件到JPEG **

save 函數的第二個參數可以指定使用的文件格式。如果文件名中使用了一個非標準的擴展名,則必須通過第二個參數來指定文件格式。

** 創建JPEG縮略圖 **

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

這意味著打開一個圖像文件是一個非常快的操作,不會受文件大小和壓縮演算法類型的影響。

** 獲得圖像信息 **

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

** 復制圖像的子區域 **

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

該區域可以做接下來的處理然後再粘貼回去。

** 處理子區域然後粘貼回去 **

當往回粘貼時,區域的大小必須和參數匹配。另外區域不能超出圖像的邊界。然而原圖像和區域的顏色模式無需匹配。區域會自動轉換。

** 滾動圖像 **

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

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

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

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

resize() 函數接受一個元組,指定圖像的新大小。
rotate() 函數接受一個角度值,逆時針旋轉。

** 基本幾何變換 **

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

** transpose **

transpose() 和 rotate() 函數在性能和結果上沒有區別。

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

PIL可以轉換圖像的像素模式。

** 轉換顏色模式 **

PIL庫支持從其他模式轉為「L」或「RGB」模式,其他模式之間轉換,則需要使用一個中間圖像,通常是「RGB」圖像。

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

** 應用過濾器 **

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

** 應用點操作 **

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

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

注意用於創建掩碼圖像的語法:

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

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

可以調整圖像對比度、亮度、色彩平衡、銳度等。

** 增強圖像 **

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

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

** 讀取序列 **

如例子中展示的,當序列到達結尾時,將拋出EOFError異常。

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

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

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

PIL庫包含一些函數用於將圖像、文本列印到Postscript列印機。以下是一個簡單的例子。

** 列印到Postscript **

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

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

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

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

如果從字元串數據中讀取圖像,使用StringIO類:

** 從字元串中讀取 **

如果圖像文件內嵌在一個大文件里,比如 tar 文件中。可以使用ContainerIO或TarIO模塊來訪問。

** 從tar文檔中讀取 **

** 該小節不太理解,請參考原文 **

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

draft() 函數。

** Reading in draft mode **

輸出類似以下內容:

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

Python2.7 教程 PIL
http://www.liaoxuefeng.com/wiki//

Python 之 使用 PIL 庫做圖像處理
http://www.cnblogs.com/way_testlife/archive/2011/04/17/2019013.html

來自 http://effbot.org/imagingbook/introction.htm

5. 如何用python將文件夾中圖片根據顏色分類


本文實例講述了Python通過PIL獲取圖片主要顏色並和顏色庫進行對比的方法。分享給大家供大家參考。具體分析如下:

這段代碼主要用來從圖片提取其主要顏色,類似Goolge和Bai的圖片搜索時可以指定按照顏色搜索,所以我們先需要將每張圖片的主要顏色提取出來,然後將顏色劃分到與其最接近的顏色段上,然後就可以按照顏色搜索了。

在使用google或者搜圖的時候會發現有一個圖片顏色選項,感覺非常有意思,有人可能會想這肯定是人為的去劃分的,呵呵,有這種可能,但是估計人會累死,開個玩笑,當然是通過機器識別的,海量的圖片只有機器識別才能做到。

那用python能不能實現這種功能呢?答案是:能

利用python的PIL模塊的強大的圖像處理功能就可以做到,下面上代碼:

復制代碼代碼如下:

import colorsys
def get_dominant_color(image):
#顏色模式轉換,以便輸出rgb顏色值
image = image.convert('RGBA')
#生成縮略圖,減少計算量,減小cpu壓力
image.thumbnail((200, 200))
max_score = None
dominant_color = None
for count, (r, g, b, a) in image.getcolors(image.size[0] * image.size[1]):
# 跳過純黑色
if a == 0:
continue
saturation = colorsys.rgb_to_hsv(r / 255.0, g / 255.0, b / 255.0)[1]
y = min(abs(r * 2104 + g * 4130 + b * 802 + 4096 + 131072) >> 13, 235)
y = (y - 16.0) / (235 - 16)
# 忽略高亮色
if y > 0.9:
continue
# Calculate the score, preferring highly saturated colors.
# Add 0.1 to the saturation so we don't completely ignore grayscale
# colors by multiplying the count by zero, but still give them a low
# weight.
score = (saturation + 0.1) * count
if score > max_score:
max_score = score
dominant_color = (r, g, b)
return dominant_color


使用方法:

from PIL import Image
print get_dominant_color(Image.open('logo.jpg'))

這樣就會返回一個rgb顏色,但是這個值是很精確的范圍,那我們如何實現網路圖片那樣的色域呢??

其實方法很簡單,r/g/b都是0-255的值,我們只要把這三個值分別劃分相等的區間,然後組合,取近似值。例如:劃分為0-127,和128-255,然後自由組合,可以出現八種組合,然後從中挑出比較有代表性的顏色即可。

當然我只是舉一個例子,你也可以劃分的更細,那樣顯示的顏色就會更准確~~大家趕快試試吧

閱讀全文

與python提取圖片紅色部分相關的資料

熱點內容
有免費編譯軟體嗎 瀏覽:916
java互聯網公司 瀏覽:70
對弈下象棋的app哪裡好 瀏覽:707
有什麼食譜app推薦 瀏覽:471
python實現動態口令 瀏覽:825
我的世界電腦伺服器地址怎麼添加 瀏覽:850
傳奇地圖怎麼加密到pak 瀏覽:977
linux刪除mysql用戶 瀏覽:755
圖案設計pdf 瀏覽:584
pdf編輯器在線 瀏覽:471
華為雲雲耀伺服器如何關機 瀏覽:994
數字加密的歷史 瀏覽:613
宏傑文件夾打不開 瀏覽:819
施工日記app哪個好 瀏覽:566
什麼是壓縮機的排氣量 瀏覽:538
在哪個app可以預約一科考試 瀏覽:634
易語言vmp加殼源碼 瀏覽:513
閱讀前端框架源碼 瀏覽:14
我的世界命令方塊傳送指令 瀏覽:545
不能用start命令打開xp 瀏覽:927