cv2,PIL,plt,tensorflow方法图片显示及plt的的plt.colorbar()的使用需要注意

几种图像读取方式总结

import matplotlib.image as img :img.imread()
import PIL.Image as Img :Img.open()
import tensorflow as tf :tf.read_file()
import cv2:cv2.imread()

需要注意:一、对于低版本的tf,需要将图片经过tf.Session()执行
二、cv2读取文件中不能有中文字符
三、cv2读取三通道和单通道的不同
四、cv2的取的图片文件使用cv.imshow()显示时,需要注意图像的像素值范围必须映射到0-255
五、plt.colorbar()必须在plt.imshow()之后

需要将plt.colorbar()放在要显示图像命令后边

否则,会出现找不到映射关系的错误

[En]

Otherwise, there is an error that the mapping relationship cannot be found

RuntimeError: No mappable was found to use for colorbar creation. First define a mappable such as an image (with imshow) or a c

使用PIL和matplotlib.image两种方式读取

import matplotlib.image as img

import matplotlib.pyplot as plt

img=img.imread(r'F:\共享文件夹\论文编辑\简化FCN\annotations\annotations\trimaps\Abyssinian_1.png')

plt.imshow(img)
plt.colorbar()
plt.show()

从图中看出,两种读取的图片像素值不一样,但显示现象一样,从colorbar看出,色彩范围一样,
计算1/255= 0.003921569,
2/255 = 0.007843138,
3/255 = 0.011764706
发现,有255对应关系,在不同模块读取图片后会对图片进行处理

cv2,PIL,plt,tensorflow方法图片显示及plt的的plt.colorbar()的使用需要注意

cv2,PIL,plt,tensorflow方法图片显示及plt的的plt.colorbar()的使用需要注意

使用tensoflow读取

import tensorflow as tf
import matplotlib.pyplot as plt

img = tf.read_file(r'F:\共享文件夹\论文编辑\简化FCN\annotations\annotations\trimaps\Abyssinian_1.png')
with tf.Session() as sess:
    img= sess.run(tf.image.decode_jpeg(img))
print(set(img.flatten()))
print(img.shape)
'''
(400, 600, 1)
'''
plt.imshow(img)
plt.show()

使用opencv的cv2.imread()和plt显示

参考:https://blog.csdn.net/qq_24815615/article/details/107885393

import cv2
import matplotlib.pyplot as plt
import os
os.chdir(r'F:\共享文件夹\论文编辑\简化FCN\annotations\annotations\trimaps',0)
img=cv2.imread(r'Abyssinian_1.png')

plt.imshow(img)
plt.colorbar()
plt.show()

cv2,PIL,plt,tensorflow方法图片显示及plt的的plt.colorbar()的使用需要注意

cv2.imread()和cv2.imshow()

参考:https://blog.csdn.net/weixin_39190382/article/details/113615763
cv2.imread()不能读取中文路径,
必须设置参数是读取单通道图像,
需要将图像像素值映射到0-255

import cv2
import matplotlib.pyplot as plt
import os
import numpy as np

def image_normalization(img, img_min=0, img_max=255):
    img = np.float32(img)
    epsilon = 1e-12
    img = (img - np.min(img)) * (img_max - img_min) / ((np.max(img) - np.min(img)) + epsilon) + img_min
    return img

os.chdir(r'F:\共享文件夹\论文编辑\简化FCN\annotations\annotations\trimaps')
img=cv2.imread(r'Abyssinian_1.png',0)
img = image_normalization(img)

cv2.imshow('single_cannel',img)
cv2.waitKey(0)

cv2,PIL,plt,tensorflow方法图片显示及plt的的plt.colorbar()的使用需要注意

Original: https://blog.csdn.net/weixin_43794311/article/details/116782309
Author: MAR-Sky
Title: cv2,PIL,plt,tensorflow方法图片显示及plt的的plt.colorbar()的使用需要注意

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/496632/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球