前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PIL.Image.open和cv2.imread的比较与相互转换的方法

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

作者头像
砸漏
发布2020-11-02 10:14:56
3.2K0
发布2020-11-02 10:14:56
举报
文章被收录于专栏:恩蓝脚本

摘要

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顺序。

例:

代码语言:javascript
复制
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(path)方法

参数:图片的路径

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

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

例:

代码语言:javascript
复制
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()

二者之间的相互转化

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

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

代码:

代码语言:javascript
复制
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格式:

代码语言:javascript
复制
isinstance(img, np.ndarray)

到此这篇关于PIL.Image.open和cv2.imread的比较与相互转换的方法的文章就介绍到这了,更多相关PIL.Image.open和cv2.imread内容请搜索ZaLou.Cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-09-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档