图像处理导入模块和封装好的函数
python
import numpy as np
import matplotlib.pyplot as plt
# 修复pyplot的中文乱码
plt.rcParams['font.sans-serif'] = ['SimHei']
# 调整全局图表大小
# print("默认图片大小是 ", plt.rcParams["figure.figsize"]) # (4, 8)
# plt.rcParams["figure.figsize"] = (4, 8)
# print("修改后默认图片大小是", plt.rcParams["figure.figsize"]) # (a, b),以上面那行为准
from PIL import Image
import cv2 as cv
# 为opencv和PIL提供的图片显示方式,可选参数为标题title,使用matplotlib的方式显示图片,会在cell格下生成一个图标
def show(img, title='null'):
# 如果是数组类型,就按照opencv的步骤显示图片
if type(img) == np.ndarray:
if img.ndim == 2:
plt.imshow(img,cmap='gray')
else :
plt.imshow(cv.cvtColor(img,cv.COLOR_BGR2RGB)) # opencv的通道顺序为[B,G,R],而matplotlib通道顺序为[R,G,B],需要调换一下
#如果不是数组类型,就按照PIL的步骤显示图片
# img.show() PIL推荐的方法,会使用系统自带的看图软件打开
else:
img_ndim = len(np.array(img).shape)
if img_ndim == 3:
plt.imshow(img) # PIL格式图片不需要进行BGR2RGB转换
elif img_ndim == 2:
plt.imshow(img, cmap='gray')
else:
print("PIL类型图片的维度异常,维度:",img_ndim)
if title != 'null':
plt.title(title, fontsize=18)
plt.show()
# 为opencv提供的图片显示方式,标题为可选选参数,会打开一个尺寸和原图一样的系统窗口
# bug: windwos下正常,macos下会卡死
def show_cv(img, title='123'):
cv.namedWindow(title,flags=cv.WINDOW_NORMAL)
h,w,r = img2.shape
cv.resizeWindow(title,w,h)
cv.imshow(title,img)
cv.waitKey(0)
cv.destroyAllWindows()
_ = cv.waitKey(1)
使用封装函数显示图像
shell
# 兼容PIL和opencv的导入
img1 = Image.open('pic/8.jpg')
img2 = cv.imread('pic/9.jpg')
show(img1,'悉尼歌剧院')
show(img2,'tiger')
实际使用
在jupter中新建一个notebook
导入一下模块和函数
再使用PIL和opencv加载两张不同的图片,成功了!只需要调用show()方法就能显示图片了,相比调用系统看图文件看图方便多啦!