(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)