zoukankan      html  css  js  c++  java
  • cv2.imread()与PIL中Image.open(),以及相互转换

    https://www.cnblogs.com/chen-hw/p/11693806.html

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

    Image 对象和 numpy 可以互相转换。但是要注意,对于同一张图片, 两种方式读取得到的数据,可能存在差异。

    使用以下代码发现, 当图片是png格式,读取结果是一致的;当图片是jpg格式时,读取结果是不一致的。这可能是因为Image.open 与 cv2.imread 在解码jpg时运算有差异。 

    img_name = '/home/szh/pictures/1.png'
    img_pil = Image.open(img_name).convert('RGB')
    img_pil = np.asarray(img_pil)

    cv2_img = cv2.imread(img_name, cv2.IMREAD_COLOR)
    cv2_img = cv2.cvtColor(cv2_img, cv2.COLOR_BGR2RGB)
    diff = cv2.absdiff(cv2_img, img_pil)
    cv2.imshow('cv2_img', cv2_img)
    cv2.imshow('diff', diff)
    cv2.waitKey()



  • 相关阅读:
    Java学习62
    Java学习61
    Maven3种打包方式之一maven-assembly-plugin的使用
    sftp 上传下载 命令介绍
    JMock+Junit4结合完成TDD实例
    UML类图中类与类的四种关系图解
    接口之间的多继承
    Linux中在当前目录下查找某个文件
    .gitignore与exclude
    pro git
  • 原文地址:https://www.cnblogs.com/rabitvision/p/12169772.html
Copyright © 2011-2022 走看看