欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-16 11:20:26
...

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