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

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_查看图像的详细信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值