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 实现归并排序算法
Jun 05 Python
详解Python字符串对象的实现
Dec 24 Python
利用Python开发实现简单的记事本
Nov 15 Python
Python编程之变量赋值操作实例分析
Jul 24 Python
Python Pandas找到缺失值的位置方法
Apr 12 Python
python下解压缩zip文件并删除文件的实例
Apr 24 Python
Python框架Flask的基本数据库操作方法分析
Jul 13 Python
python实现Excel文件转换为TXT文件
Apr 28 Python
基于python实现百度翻译功能
May 09 Python
python中metaclass原理与用法详解
Jun 25 Python
selenium中get_cookies()和add_cookie()的用法详解
Jan 06 Python
Jupyter notebook如何实现指定浏览器打开
May 13 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
基于PHP5魔术常量与魔术方法的详解
2013/06/13 PHP
PHP时间类完整代码实例
2021/02/26 PHP
javascript数组的使用
2013/03/28 Javascript
JS+CSS实现带关闭按钮DIV弹出窗口的方法
2015/02/27 Javascript
jquery实现Li滚动时滚动条自动添加样式的方法
2015/08/10 Javascript
jQuery侧边栏实现代码
2016/05/06 Javascript
表单input项使用label同时引用Bootstrap库导致input点击效果区增大问题
2016/10/11 Javascript
Bootstrap表单使用方法详解
2017/02/17 Javascript
详解Vue-基本标签和自定义控件
2017/03/24 Javascript
深入理解vuex2.0 之 modules
2017/11/20 Javascript
浅谈Vue.js 中的 v-on 事件指令的使用
2018/11/25 Javascript
layui 选择列表,打勾,点击确定返回数据的例子
2019/09/02 Javascript
详解Vue3中对VDOM的改进
2020/04/23 Javascript
JavaScript或jQuery 获取option value值方法解析
2020/05/12 jQuery
nuxt.js 在middleware(中间件)中实现路由鉴权操作
2020/11/06 Javascript
python实现的一个火车票转让信息采集器
2014/07/09 Python
Python文件处理
2016/02/29 Python
Python将图片批量从png格式转换至WebP格式
2020/08/22 Python
Python获取当前页面内所有链接的四种方法对比分析
2017/08/19 Python
python中将两组数据放在一起按照某一固定顺序shuffle的实例
2019/07/15 Python
django 基于中间件实现限制ip频繁访问过程详解
2019/07/30 Python
分享一个pycharm专业版安装的永久使用方法
2019/09/24 Python
jupyter实现重新加载模块
2020/04/16 Python
HTML5地理定位实例
2014/10/15 HTML / CSS
全球知名旅游社区巴西站点:TripAdvisor巴西
2016/07/21 全球购物
美国生鲜及杂货电商:FreshDirect
2018/01/29 全球购物
iPad和Surface Pro蓝牙键盘:Brydge
2018/11/10 全球购物
雅诗兰黛加拿大官网:Estee Lauder加拿大
2019/07/31 全球购物
《七颗钻石》教学反思
2014/02/28 职场文书
法人代表证明书格式
2014/10/01 职场文书
2015元旦标语横幅
2014/12/09 职场文书
乡镇安全生产月活动总结
2015/05/08 职场文书
交通安全学习心得体会
2016/01/18 职场文书
JavaScript控制台的更多功能
2021/04/28 Javascript
python 算法题——快乐数的多种解法
2021/05/27 Python
Python面向对象之内置函数相关知识总结
2021/06/24 Python