PIL和OpenCV 打开单通道图像、进行显示和数据查看

您所在的位置:网站首页 单通道图像 PIL和OpenCV 打开单通道图像、进行显示和数据查看

PIL和OpenCV 打开单通道图像、进行显示和数据查看

2024-01-15 04:13| 来源: 网络整理| 查看: 265

1.用opencv读取单通道png文件的时候发现,读取后的图像变量是3通道,网上查了下imread函数的参数。

PIL读取单通道的图像结果还是单通道,不存在opencv的问题。

2.显示,在进行matplotlib进行单通道图像显示的时候发现显示结果不是很正常,于是查了下,下面代码可以正常显示。

import cv2 import matplotlib.pyplot as plt img = cv2.imread('/home/kitty/workspace/lesson-2/data/train/image/1.png', 0) print(img.size) plt.figure(1) plt.imshow(img, cmap='Greys_r') plt.show()

3.PIL和opencv还有一点区别,opencv的图像变量存在一个array成员保存图像像素数据,PIL.Image变量则没有,使用PIL.Image想获取图像的像素数据可以采用下面的方法。

from PIL import Image import numpy as np img3 = Image.open('/home/kitty/workspace/lesson-2/data/train/image/1.png'); img3.show() print(img3.size) #1 img_data = img3.load() img_data[10,10] # img_data[x,y] #2 img3.getpixel((10,10)) #3 img_np = np.array(img3)

 

 

附录:(imread的相关参数) cv.IMREAD_UNCHANGED = -1, 原格式读入,透明度保留,实际上并不会根据文件的后缀格式读入文件; cv.IMREAD_GRAYSCALE = 0,读入单通道文件,与BGR2GRAY得到的数据不一致; cv.IMREAD_COLOR = 1, 读入彩色图,透明度被忽略 cv.IMREAD_ANYDEPTH = 2, 读入深度不限制 cv.IMREAD_ANYCOLOR = 4, 读入色彩不限制 cv.IMREAD_LOAD_GDAL = 8, cv.IMREAD_REDUCED_GRAYSCALE_2 = 16, 另一种单通道读入; cv.IMREAD_REDUCED_COLOR_2 = 17, cv.IMREAD_REDUCED_GRAYSCALE_4 = 32, cv.IMREAD_REDUCED_COLOR_4 = 33, cv.IMREAD_REDUCED_GRAYSCALE_8 = 64, cv.IMREAD_REDUCED_COLOR_8 = 65, cv.IMREAD_IGNORE_ORIENTATION = 128

 

参考文献:

1.Opencv 直接读入单通道和BGR转灰度图的差异

2.PIL_查看图像的详细信息



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3