Python对图像的基本操作

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

猜你喜欢

转载自blog.csdn.net/a8039974/article/details/84649248