Image.open()与cv2.imread()区别

Image.open()与cv2.imread()区别

Image.open()函数只是保持了图像被读取的状态,但是图像的真实数据并未被读取,因此如果对需要操作图像每个元素,如输出某个像素的RGB值等,需要执行对象的load()方法读取数据。具体如下:

img = Image.open("lena.jpg") img = img.load() print(img[0,0])

result:(255, 201, 166)

  1. 默认读入图像通道

对于Image.open()函数默认真彩图像读取通道顺序为RGB,而cv2.imread()则是BGR。同时,当图像格式为RGBA时,Image.open(‘—.jpg’)读取的格式为RGBA(其中A表示图像的alpha通道,即RGBA共四个通道),而cv2.imread(’—.jpg’)读取的格式是BGR,只有三个通道。

(1)

import cv2
    from PIL import Image
    img = cv2.imread(r"F:\DailyPractice\AffectiveComputing\ck+_dataset\1_17_0.png")
    b, g, r = cv2.split(img)
    img = Image.open(r"F:\DailyPractice\AffectiveComputing\ck+_dataset\1_17_0.png")
    print(img.mode)

结果如下:

RGBA

版权声明:本文为qq_46107892原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。