PIL.Image.open和cv2.imread的比较与相互转换的方法

作者:神码堂 时间:2021-05-06 22:09:38 

摘要

PIL.Image.open读入的是RGB顺序,而opencv中cv2.imread读入的是BGR通道顺序 。cv2.imread会显示图片更蓝一些。

cv2.imread(path,读取方式)方法

第一个参数是图片的路径。

第二个参数是读取方式:cv2.IMREAD_COLOR:读入一副彩 * 片;cv2.IMREAD_GRAYSCALE:以灰度模式读入图片;cv2.IMREAD_UNCHANGED:读入一幅图片,并包括其alpha通道。

默认为cv2.IMREAD_COLOR。

返回值是(height,width,channel)数组,channel的顺序是BGR顺序。

例:


import cv2
from PIL import Image
imagePath='4.jpg'
import matplotlib.pyplot as plt
cvImage=cv2.imread(imagePath)
print(cvImage.shape)
plt.subplot(121)
plt.imshow(cvImage)
plt.show()

PIL.Image.open和cv2.imread的比较与相互转换的方法

PIL.Image.open(path)方法

参数:图片的路径

返回值: <PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=374x288 at 0x13EA15F7808>

需要用img=np.array(img)做转换,才能看到shape属性,是(height,width,channel)数组,channel的通道顺序为RGB。

例:


from PIL import Image

import numpy as np

imagePath='4.jpg'

import matplotlib.pyplot as plt

'''

cvImage=cv2.imread(imagePath)

print(cvImage.shape)

plt.subplot(121)

plt.imshow(cvImage)

plt.show()

'''

img=Image.open(imagePath)

img=np.array(img)

print(img.shape)

plt.imshow(img)

plt.show()

PIL.Image.open和cv2.imread的比较与相互转换的方法

二者之间的相互转化

主要用到的函数cv2.cvtColor(p1,p2) 是颜色空间转换函数,p1是需要转换的图片,p2是转换成何种格式。

本例用到的格式是cv2.COLOR_RGB2BGR和cv2.COLOR_BGR2RGB

代码:


def PILImageToCV(imagePath):
    # PIL Image转换成OpenCV格式
    img = Image.open(imagePath)
    plt.imshow(img)
    img = cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR)
    plt.imshow(img)
    plt.show()

def CVImageToPIL(imagePath):
    # OpenCV图片转换为PIL image
    img = cv2.imread(imagePath)
    plt.imshow(img)
    img2 = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
    plt.imshow(img2)
    plt.show()

判断图像数据是否是OpenCV格式:


isinstance(img, np.ndarray)

来源:https://blog.csdn.net/hhhhhhhhhhwwwwwwwwww/article/details/106470446

标签:PIL.Image.open,cv2.imread
0
投稿

猜你喜欢

  • Python技巧之四种多线程应用分享

    2021-12-04 12:11:57
  • 一篇文章带你了解python标准库--sys模块

    2022-04-25 10:21:37
  • 认识MySQL数据库对服务器端光标的限制

    2009-03-25 17:35:00
  • python里 super类的工作原理详解

    2022-06-13 23:54:14
  • Flask wtforms实现表单验证使用

    2021-12-16 05:04:27
  • asp使用 sql_dmo 添加新数据库代码

    2010-03-17 20:57:00
  • python实现音乐播放和下载小程序功能

    2023-07-03 17:59:03
  • Python中非常好用的内置函数详解

    2023-04-05 06:28:25
  • centos6.7安装python2.7.11的具体方法

    2022-04-29 00:42:54
  • python 提取html文本的方法

    2021-05-27 03:43:46
  • Oracle 添加用户并赋权,修改密码,解锁,删除用户的方法

    2009-10-14 11:37:00
  • 谈点关于checkbox的事情

    2010-09-28 14:49:00
  • 利用python3筛选excel中特定的行(行值满足某个条件/行值属于某个集合)

    2022-10-26 01:44:22
  • python基于tkinter点击按钮实现图片的切换

    2022-03-18 10:22:31
  • 设计师的职业规划

    2009-08-31 12:52:00
  • php获取文章内容第一张图片的方法示例

    2023-11-09 18:55:14
  • (X)HTML Strict 下的嵌套规则

    2008-03-08 18:39:00
  • OpenCV物体跟踪树莓派视觉小车实现过程学习

    2021-09-15 21:55:48
  • Python psutil模块简单使用实例

    2023-08-10 21:15:37
  • 我喜欢你 抖音表白程序python版

    2023-06-11 12:54:17
  • asp之家 网络编程 m.aspxhome.com