Python對影象的基本操作
阿新 • • 發佈:2018-12-01
(1)cv2方式
# -*- coding: utf-8 -*- """ Created on Thu Nov 29 14:19:53 2018 @author: cz """ from PIL import Image import cv2 import matplotlib.pyplot as plt import numpy as np # 開啟 im = cv2.imread("test.png") # BGR # 尺寸 size = im.shape # 二值化畫素操作 for i in range(size[0]): for j in range(size[1]): if(sum(im[i,j]) > 50): im[i,j] = (255,255,255) # 儲存 cv2.imwrite("save.png",im) # 顯示 cv2.imshow("Image",im) cv2.waitKey(0)
(2)PIL方式
# -*- coding: utf-8 -*- """ Created on Thu Nov 29 14:19:53 2018 @author: Administrator """ from PIL import Image import cv2 import matplotlib.pyplot as plt import numpy as np # 開啟 im = Image.open("test.png") # 轉換為numpy格式 im = np.array(im) # 尺寸 size = im.shape # 二值化畫素操作 for i in range(size[0]): for j in range(size[1]): if(sum(im[i,j]) > 50): im[i,j] = (255,255,255) # 轉換為PIL格式 im = Image.fromarray(im) # 儲存 im.save("save.png") # 顯示 im.show()
也可以統一使用plt進行顯示,不管是plt還是cv2.imshow,在python中只認numpy.array,但是由於cv2.imread 的圖片是BGR,cv2.imshow 時相應的換通道顯示
# -*- coding: utf-8 -*- """ Created on Thu Nov 29 14:19:53 2018 @author: Administrator """ from PIL import Image import cv2 import matplotlib.pyplot as plt import numpy as np # 開啟 im = Image.open("test.png") # 轉換為numpy格式 im = np.array(im) # 尺寸 size = im.shape # 二值化畫素操作 for i in range(size[0]): for j in range(size[1]): if(sum(im[i,j]) > 50): im[i,j] = (255,255,255) # 轉換為PIL格式 img = Image.fromarray(im) # 儲存 img.save("save.png") # 顯示 plt.imshow(im) plt.show()
(3)skimage方式
# -*- coding: utf-8 -*-
"""
Created on Thu Nov 29 14:19:53 2018
@author: Administrator
"""
from PIL import Image
import cv2
import matplotlib.pyplot as plt
import numpy as np
from skimage import io
# 開啟
im = io.imread("test.png")
# 尺寸
size = im.shape
# 二值化畫素操作
for i in range(size[0]):
for j in range(size[1]):
if(sum(im[i,j]) > 50):
im[i,j] = (255,255,255)
# 儲存
io.imsave('save.png',im)
# 顯示
io.imshow(im)