PIL.Image.open和cv2.imread的比较与相互转换的方法
作者:神码堂 发布时间:2021-05-06 22:09:38
标签:PIL.Image.open,cv2.imread
摘要
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(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()
二者之间的相互转化
主要用到的函数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
0
投稿
猜你喜欢
- 1.在爬虫文件中只需要解析提取出图片地址,然后将地址提交给管道在管道文件对图片进行下载和持久化存储class ImgSpider(scrap
- 什么是字典字典是Python中最强大的数据类型之一,也是Python语言中唯一的映射类型。映射类型对象里哈希值(键,key)和指向的对象(值
- 函数getcache,会自动建立需要的缓存。 代码如下:Function getcache(funsname,isreset,is
- 本文实例为大家分享了Python实现k-means算法的具体代码,供大家参考,具体内容如下这也是周志华《机器学习》的习题9.4。 数据集是西
- 时间戳的问题我们的微博应用的一个忽略了很久的问题就是日间和日期的显示。直到现在,我们在我们的User和Post对象中使用Pyth
- 爬取结果:爬取代码import osimport jsonimport requestsfrom tqdm import tqdmdef l
- 本文实例为大家分享了python实现UDP文件传输的具体代码,供大家参考,具体内容如下UDP协议下文件传输:服务端import socket
- 这最近在PJ的function库里看到的这个函数,感觉思路差了点,不过相对比较完美,只是闭合标签时的顺序问题,呵呵 修改一下数组arrTag
- 下载源码git clone https://github.com/mysql/mysql-server.gitcd mysql-server
- 有时候我们没办法得到pdf或者word文档,这个时候会使用手机或者相机进行拍照,往往会出现背景,打印出来就是灰色的或者有黑色的背景,这个时候
- git push时卡住(长时间不报错也不自动退出)大致问题:之前用http克隆代码时,之前提交到自己的fork仓(仓)时都是稳稳进行,突然有
- 目录一,python介绍二.python的安装程序三、变量python基础部分学习一,python介绍python的创始人为吉多·范罗苏姆(
- 格式化字符串漏洞覆盖大数字时,如果选择一次性输出大数字个字节来进行覆盖,会很久很久,或者直接报错中断,所以来搞个攻防世界高手区的题目来总结一
- 简介str是采用Unicode编码方式的序列,主要用于显示bytes是字节序列,主要用于网络和文件传输bytearray和bytes是一样的
- 昨天在做一道CTF题的时候碰到了一个图片异或的问题,操作大概如下:将一个图片读入,然后每字节进行异或操作,核心代码可简化为以下:#codin
- 前言实现类似SQL的join操作,通过pd.merge()方法可以自由灵活地操作各种逻辑的数据连接、合并等操作可以将两个DataFrame或
- 本文实例讲述了python实现上传样本到virustotal并查询扫描信息的方法。分享给大家供大家参考。具体方法如下:import simp
- 目录背景方案一:老数据备份方案二:分表方案三:迁移至tidb重点说下同步老数据遇到的坑最终同步脚本方案总结背景由于历史业务数据采用mysql
- Python字典中的键是唯一的,但不同的键可以对应同样的值,比如说uid,可以是1001。id同样可以是1001。这样的话通过值来获取指定的
- 饼图常用于统计学模块,画饼图用到的方法为:pie( )一、pie()函数用来绘制饼图pie(x, explode=None, labels=