python CV 和 PIL

1、用PIL读取的图片不是numpy,用cv读取的图片就是numpy。

testPIL = Image.open(r"d:\Desktop\test1.jpeg")
testCV = cv2.imread(r"d:\Desktop\test1.jpeg")

2、可以将PIL读入的图片赋值给numpy:

testPIL_NP = np.array(testPIL)

如下所示,testPIL_NP和testCV一模一样,唯一不一样的地方是,testPIL_NP是RGB,而testCV是BGR。

3、当图像数据是numpy类型时,只能用cv2.imwrite保存,不能用PIL的save保存;当图像类型是PIL.Image类型时,只能用PIL的save保存,不能用cv2.imwrite。

4、cv2.imread 默认读入三通道数据,哪怕原图是单通道的,它也会复制三份变成三通道。
如何指定读入的通道数:

img_o = cv2.imread(r"d:\Desktop\test1.jpeg", -1)  # 按原图的通道数,原图是几通道就读几通道
img_g = cv2.imread(r"d:\Desktop\test1.jpeg", 0)   # 读入灰度图,单通道
img_c = cv2.imread(r"d:\Desktop\test1.jpeg", 1)   # 读入彩色图,三通道
img_d = cv2.imread(r"d:\Desktop\test1.jpeg")      # 没写参数,默认是1,读入彩色图,三通道

 cv2.imwrite则不会默认三通道,当前numpy数据是几通道它就保存成几通道的。

猜你喜欢

转载自blog.csdn.net/m0_52848925/article/details/131152246