显示图像 matplotlib常用技巧和方法【附代码】

显示图片的多种方式
拿到一张tensor格式的图片
plt.figure(“Image”) # 图像窗口名称
plt.imshow(img.numpy().transpose((1,2,0))) #维度变换一下
plt.show()

拿到一张opencv的图片
plt.imshow(img,cmap="gray") 
plt.show()


转成1维输出,彩色图会变色
import matplotlib.pyplot as plt
plt.imshow(img[-1])# 这里一定是一维的向量
plt.title('result')
plt.show()

单纯普通img类型图片输出
import os
from PIL import Image
import matplotlib.pyplot as plt
img = Image.open(os.path.join('images', '2007_000648' + '.jpg'))
plt.figure("Image") # 图像窗口名称
plt.imshow(img)
plt.axis('on') # 关掉坐标轴为 off
plt.title('image') # 图像题目
plt.show()


显示多幅图像单纯普通img类型
import os
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt

img = Image.open(os.path.join('images', '2007_000648' + '.jpg'))
gray = img.convert('L')
r,g,b = img.split()
img_merged = Image.merge('RGB', (r, g, b))


plt.figure(figsize=(10,5)) #设置窗口大小
plt.suptitle('Multi_Image') # 图片名称
plt.subplot(2,3,1), plt.title('image')
plt.imshow(img), plt.axis('off')
plt.subplot(2,3,2), plt.title('gray')
plt.imshow(gray,cmap='gray'), plt.axis('off') #这里显示灰度图要加cmap
plt.subplot(2,3,3), plt.title('img_merged')
plt.imshow(img_merged), plt.axis('off')
plt.subplot(2,3,4), plt.title('r')
plt.imshow(r,cmap='gray'), plt.axis('off')
plt.subplot(2,3,5), plt.title('g')
plt.imshow(g,cmap='gray'), plt.axis('off')
plt.subplot(2,3,6), plt.title('b')
plt.imshow(b,cmap='gray'), plt.axis('off')

plt.show()


显示多张图像
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt

titles = ['img','cvOpen','cvClose' ,'tophat','img_back']
images = [img, cvOpen,cvClose,tophat,img_back]
plt.figure(dpi=200) #指定输出像素大小
for i in range(len(images)):
    plt.subplot(1, len(images), i + 1)
    plt.imshow(images[i])
    plt.title(titles[i], fontsize=8)
    plt.xticks([]), plt.yticks([])
plt.show()


分两行显示
titles = ['img','cvOpen','cvClose' ,'tophat','img_back','thresh1']
images = [img, cvOpen,cvClose,tophat,img_back,thresh1]
plt.figure(dpi=200) #指定输出像素大小
for i in range(len(images)):
    plt.subplot(2, len(images)/2, i + 1)
    plt.imshow(images[i])
    plt.title(titles[i], fontsize=8)
    plt.xticks([]), plt.yticks([])
plt.show()



# 3. 图像显示 彩色的就用这个
fig,axes=plt.subplots(nrows=1,ncols=2,figsize=(10,8),dpi=100)
axes[0].imshow(img1[:,:,::-1])
axes[0].set_title("原图")
axes[1].imshow(dst[:,:,::-1])
axes[1].set_title("平移后结果")
plt.show()

灰度图用这个
fig,axes=plt.subplots(nrows=1,ncols=2,figsize=(10,8),dpi=100)
axes[0].imshow(img1,'gray')
axes[0].set_title("orign")
axes[1].imshow(dst,'gray')
axes[1].set_title("change")
plt.show()


常用显示图片方法---opencv,用matplot
def im_show(img,name=""):
    img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    plt.imshow(img)
    print(name)
    plt.show()
def grey_show(img,name="",dpi=100):
    plt.figure(dpi=dpi)
    plt.imshow(img,cmap="gray")
    print(name)
    plt.show()

其他问题

#BGR转RGB,方法1
img_rgb1 = cv2.merge([R, G, B])

#BGR转RGB,方法2
img_rgb2 = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

#BGR转RGB,方法3
img_rgb3 = img[:,:,::-1]


from d2l import torch as d2l

例子
hotdogs = [train_imgs[i][0] for i in range(8)]
not_hotdogs = [train_imgs[-i - 1][0] for i in range(8)]
d2l.show_images(hotdogs + not_hotdogs, 2, 8, scale=1.4);

显示图片 不同像素显示不同颜色
plt.imshow(img,cmap=‘viridis’)

Image.PIL 类型,灰度图转彩色图防止报错
from PIL import Image
image=image.convert(‘RGB’)

猜你喜欢

转载自blog.csdn.net/weixin_46124467/article/details/128611961