python圖片簡易像素修改

首先,我們需要的工具有scipy, numpy, Image, matplotlib.pyplot。具體安裝方式爲

pip install numpy
pip install scipy
pip install matplotlib
pip install Image

進行圖片處理時我們需要,導入python lib,如下

from PIL import Image
import numpy as np
import matplotlib.pyplot as plt

1.打開圖像並轉化爲矩陣,並顯示

from PIL import Image
import numpy as np
import matplotlib.pyplot as plt

img = np.array(Image.open('/home/cheung/Downloads/love.jpg'))
print img.shape
print img.dtype
print img.size
print type(img)

plt.figure("love")
plt.imshow(img)
plt.axis('off')
plt.show()

輸出爲

(1080, 1440, 3)
uint8
4665600
<type 'numpy.ndarray'>

這裏寫圖片描述

調用numpy中的array()函數就可以將PIL對象轉換爲數組對象。對於RGB圖片,轉換爲array之後,就變成了一rowscolschannels的三維矩陣,因此,我們可以使用img[i,j,k]訪問像素值

2.打開圖片,添加一些噪音

from PIL import Image
import numpy as np
import matplotlib.pyplot as plt

img = np.array(Image.open('/home/cheung/Downloads/love.jpg'))

rows,cols,dims=img.shape
for i in range(10000):
    x=np.random.randint(0,rows)
    y=np.random.randint(0,cols)
    img[x,y,:]=255

plt.figure("love")
plt.imshow(img)
plt.axis('off')
plt.show()

這裏寫圖片描述

3.圖像二值化,像素值大於128的變爲1,否則變爲0

from PIL import Image
import numpy as np
import matplotlib.pyplot as plt

img = np.array(Image.open('/home/cheung/Downloads/love.jpg').convert('L'))

rows,cols=img.shape
rows,cols=img.shape
for i in range(rows):
    for j in range(cols):
        if (img[i,j]<=128):
            img[i,j]=0
        else:
            img[i,j]=1

plt.figure("love")
plt.imshow(img, cmap='gray')
plt.axis('off')
plt.show()

這裏寫圖片描述

4.圖片剪切保存

from PIL import Image
import numpy as np
import matplotlib.pyplot as plt

img = Image.open('/home/cheung/Downloads/love.jpg')

box = img.copy()
box = (500, 500, 900, 900)
region = img.crop(box)

region.save('/home/cheung/Downloads/love4.jpg', "JPEG")

plt.figure("love")
plt.imshow(region, cmap='gray')
plt.axis('off')
plt.show()

這裏寫圖片描述

參考文獻
1.https://www.cnblogs.com/denny402/p/5096491.html
2.https://www.cnblogs.com/wbin91/p/3971079.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章