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


Posted in Python onJune 03, 2020

摘要

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)

到此这篇关于PIL.Image.open和cv2.imread的比较与相互转换的方法的文章就介绍到这了,更多相关PIL.Image.open和cv2.imread内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
使用python Django做网页
Nov 04 Python
详解python发送各类邮件的主要方法
Dec 22 Python
python3.0 模拟用户登录,三次错误锁定的实例
Nov 02 Python
Python设置在shell脚本中自动补全功能的方法
Jun 25 Python
利用Python实现kNN算法的代码
Aug 16 Python
Python 脚本实现淘宝准点秒杀功能
Nov 13 Python
Python3标准库之dbm UNIX键-值数据库问题
Mar 24 Python
浅谈Python 函数式编程
Jun 20 Python
pycharm不以pytest方式运行,想要切换回普通模式运行的操作
Sep 01 Python
pytorch 移动端部署之helloworld的使用
Oct 30 Python
Python入门之基础语法详解
May 11 Python
python实现语音常用度量方法的代码详解
May 25 Python
Python3创建Django项目的几种方法(3种)
Jun 03 #Python
Django 实现 Websocket 广播、点对点发送消息的代码
Jun 03 #Python
使用python实现时间序列白噪声检验方式
Jun 03 #Python
部署Django到阿里云服务器教程示例
Jun 03 #Python
Python flask路由间传递变量实例详解
Jun 03 #Python
django的autoreload机制实现
Jun 03 #Python
浅谈python量化 双均线策略(金叉死叉)
Jun 03 #Python
You might like
PHP 截取字符串 分别适合GB2312和UTF8编码情况
2009/02/12 PHP
PHP的autoload机制的实现解析
2012/09/15 PHP
PHP数据类型之整数类型、浮点数的介绍
2013/04/28 PHP
PHP日期函数date格式化UNIX时间的方法
2015/03/19 PHP
PHP获取文本框、密码域、按钮的值实例代码
2017/04/19 PHP
PHP memcache在微信公众平台的应用方法示例
2017/09/13 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
2020/04/04 PHP
用javascript实现点击链接弹出&quot;图片另存为&quot;而不是直接打开
2007/08/15 Javascript
javascript如何创建表格(javascript绘制表格的二种方法)
2013/12/10 Javascript
jQuery+CSS实现的网页二级下滑菜单效果
2015/08/25 Javascript
Canvas实现放射线动画效果
2017/02/15 Javascript
javascript实现多张图片左右无缝滚动效果
2017/03/22 Javascript
vue高德地图之玩转周边
2017/06/16 Javascript
详解webpack运行Babel教程
2018/06/13 Javascript
详解用async/await来处理异步
2019/08/28 Javascript
antd vue table跨行合并单元格,并且自定义内容实例
2020/10/28 Javascript
js实现简单图片拖拽效果
2021/02/22 Javascript
详解vue3中组件的非兼容变更
2021/03/03 Vue.js
Python操作MongoDB数据库PyMongo库使用方法
2015/04/27 Python
使用Python爬了4400条淘宝商品数据,竟发现了这些“潜规则”
2018/03/23 Python
Python实用技巧之列表、字典、集合中根据条件筛选数据详解
2018/07/11 Python
python搜索包的路径的实现方法
2019/07/19 Python
pytorch构建多模型实例
2020/01/15 Python
Django高并发负载均衡实现原理详解
2020/04/04 Python
Python实现自动签到脚本的示例代码
2020/08/19 Python
长曲棍球装备:Lacrosse Monkey
2020/12/02 全球购物
行政主管职责范本
2014/03/07 职场文书
低碳生活倡议书
2014/04/14 职场文书
家庭贫困证明书(3篇)
2014/09/15 职场文书
公司租房协议书范本
2014/10/08 职场文书
有关花店创业的计划书模板
2019/08/27 职场文书
只用Python就可以制作的简单词云
2021/06/07 Python
浅析Python实现DFA算法
2021/06/26 Python
纯CSS3实现div按照顺序出入效果
2021/07/15 HTML / CSS
教你部署vue项目到docker
2022/04/05 Vue.js
CentOS 7安装mysql5.7使用XtraBackUp备份工具命令详解
2022/04/12 MySQL