簡體   English   中英

在不帶PIL的Python中模糊圖像

[英]Blurring an image in Python without PIL

我試圖定義一個函數,該函數將在不使用PIL的情況下模糊python中的圖像。 每個像素的顏色需要與周圍8個像素的顏色進行平均,即:

o的值需要與x的所有值平均。

x x x
x o x
x x x

我有:

def blur():
global photo
pixels = Image.getPixels(photo)
for row in range(photo.height()):
    for col in range(photo.width()):
        red = pixels[row][col][0]
        green = pixels[row][col][1]
        blue = pixels[row][col][2]
Image.setPixels(photo,pixels)

其中Image.getPixels()返回同一列表中0到255之間的紅色,綠色和藍色值([0]返回紅色,[1]返回綠色,[2]返回藍色),它們的x和y值分別表示按行和列。 我已經進行了相當廣泛的搜索以尋找正確方向的提示,但是沒有找到所有相關的東西。 任何想法/幫助將不勝感激。 謝謝!

我認為這是家庭作業,所以我不會寫代碼。 您可能可以使用numpy vectorize,這是一個指針如何將python代碼向量化? 將上面的三個和下面的三個相加,然后將硬編碼加到側面並除以8。然后在新的三維數組中重新分配紅色藍色和綠色,您可以將其預分配為舊圖像的大小。

Ofc要計算8個元素的平均值,您需要擁有這些元素的總和,因此從此開始。 讓我們考慮一下這些元素將具有哪些索引。 如果中間的像素為[x] [y],則其右邊的像素將為[x + 1] [y],其上的像素將為[x] [y + 1]。 找出您需要的所有八個索引,然后將這8個值相加。 最后,將結果除以8。同樣重要的是,要使用兩個不同的表(只需將圖像復制到另一個表中)-一個用於獲取平均值來計算平均值,第二個用於保存新像素,因為否則,僅使用一張表格來計算下一個像素,您將使用已經更改的像素的平均值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM