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实现的文件夹清理程序分享
Nov 22 Python
Python实现建立SSH连接的方法
Jun 03 Python
python 性能优化方法小结
Mar 31 Python
python万年历实现代码 含运行结果
May 20 Python
pyqt5的QComboBox 使用模板的具体方法
Sep 06 Python
Python实现高斯函数的三维显示方法
Dec 29 Python
python Tkinter版学生管理系统
Feb 20 Python
python3实现斐波那契数列(4种方法)
Jul 15 Python
python实现按键精灵找色点击功能教程,使用pywin32和Pillow库
Jun 04 Python
python实现企业微信定时发送文本消息的实例代码
Nov 25 Python
python分分钟绘制精美地图海报
Feb 15 Python
Python实现聚类K-means算法详解
Jul 15 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 字符串正则替换函数preg_replace使用说明
2011/07/15 PHP
zen cart实现订单中增加paypal中预留电话的方法
2016/07/12 PHP
PHP获取ttf格式文件字体名的方法示例
2019/03/06 PHP
IE iframe的onload方法分析小结
2010/01/07 Javascript
JS中动态添加事件(绑定事件)的代码
2011/01/09 Javascript
基于mootools插件实现遮罩层新手引导
2012/05/24 Javascript
JQuery为页面Dom元素绑定事件及解除绑定方法
2014/04/23 Javascript
IE6浏览器中window.location.href无效的解决方法
2014/11/20 Javascript
javascript实现带节日和农历的日历特效
2015/02/01 Javascript
JavaScript实现把rgb颜色转换成16进制颜色的方法
2015/06/01 Javascript
JS实现的5级联动Select下拉选择框实例
2015/08/17 Javascript
JavaScript通过代码调用Flash显示的方法
2016/02/02 Javascript
Vue 中mixin 的用法详解
2018/04/23 Javascript
jQuery+PHP实现上传裁剪图片
2020/06/29 jQuery
微信小程序中的canvas 文字断行和省略号显示功能的处理方法
2018/11/14 Javascript
[01:25]2014DOTA2国际邀请赛 zhou分析LGD比赛情况
2014/07/14 DOTA
让python的Cookie.py模块支持冒号做key的方法
2010/12/28 Python
Python注释详解
2016/06/01 Python
Python之str操作方法(详解)
2017/06/19 Python
Python基于OpenCV实现视频的人脸检测
2018/01/23 Python
在Pycharm中自动添加时间日期作者等信息的方法
2019/01/16 Python
Python使用Pickle模块进行数据保存和读取的讲解
2019/04/09 Python
利用OpenCV和Python实现查找图片差异
2019/12/19 Python
python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)
2020/03/09 Python
python else语句在循环中的运用详解
2020/07/06 Python
python如何修改文件时间属性
2021/02/05 Python
解决pip安装tensorflow中出现的no module named tensorflow.python 问题方法
2021/02/20 Python
Lookfantastic瑞典:英国知名美妆购物网站
2018/04/06 全球购物
幼儿园运动会口号
2014/06/07 职场文书
商场客服专员岗位职责
2014/06/13 职场文书
意外伤害赔偿协议书
2014/09/16 职场文书
优秀家长事迹材料(2016推荐版)
2016/02/29 职场文书
辞职信怎么写?你都知道吗?
2019/06/24 职场文书
python 实现定时任务的四种方式
2021/04/01 Python
前端vue+express实现文件的上传下载示例
2022/02/18 Vue.js
画错魏国疆域啦!《派对咖孔明》动画因作画失误于官网致歉
2022/04/07 日漫