首先,我們需要的工具有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