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 相关文章推荐
高性能web服务器框架Tornado简单实现restful接口及开发实例
Jul 16 Python
Python控制多进程与多线程并发数总结
Oct 26 Python
django rest framework之请求与响应(详解)
Nov 06 Python
python合并已经存在的sheet数据到新sheet的方法
Dec 11 Python
Django如何自定义model创建数据库索引的顺序
Jun 20 Python
python实现大量图片重命名
Mar 23 Python
Python图片处理模块PIL操作方法(pillow)
Apr 07 Python
python中np是做什么的
Jul 21 Python
如何真正的了解python装饰器
Aug 14 Python
Python如何使用ElementTree解析xml
Oct 12 Python
详解Python3.8+PyQt5+pyqt5-tools+Pycharm配置详细教程
Nov 02 Python
Python暴力破解Mysql数据的示例
Nov 09 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 异步执行方法,模拟多线程的应用分析
2013/06/03 PHP
CodeIgniter使用phpcms模板引擎
2013/11/12 PHP
php生成随机字符串可指定纯数字、纯字母或者混合的
2014/04/18 PHP
php自动识别文字编码并转换为目标编码的方法
2015/08/08 PHP
删除PHP数组中头部、尾部、任意元素的实现代码
2017/04/10 PHP
javascript 密码强度验证规则、打分、验证(给出前端代码,后端代码可根据强度规则翻译)
2010/05/18 Javascript
IE6不能修改NAME问题的解决方法
2010/09/03 Javascript
Extjs4 GridPanel的主要配置参数详细介绍
2013/04/18 Javascript
实现动画效果核心方式的js代码
2013/09/27 Javascript
Textarea根据内容自适应高度
2013/10/28 Javascript
JS实现的适合做faq或menu滑动效果示例
2016/11/17 Javascript
JavaScript中offsetWidth的bug及解决方法
2017/05/17 Javascript
js学习心得_一个简单的动画库封装tween.js
2017/07/14 Javascript
Vue keep-alive实践总结(推荐)
2017/08/31 Javascript
vue.js  父向子组件传参的实例代码
2017/10/29 Javascript
对angularJs中2种自定义服务的实例讲解
2018/09/30 Javascript
JavaScript基于遍历操作实现对象深拷贝功能示例
2019/03/05 Javascript
Javascript读取上传文件内容/类型/字节数
2019/04/30 Javascript
微信小程序如何引用外部js,外部样式,公共页面模板
2019/07/23 Javascript
vue基于better-scroll实现左右联动滑动页面
2020/06/30 Javascript
用Python的SimPy库简化复杂的编程模型的介绍
2015/04/13 Python
Python实现列表删除重复元素的三种常用方法分析
2017/11/24 Python
Python+matplotlib实现填充螺旋实例
2018/01/15 Python
Python实现对一个函数应用多个装饰器的方法示例
2018/02/09 Python
python实现在IDLE中输入多行的方法
2018/04/19 Python
Pandas之DataFrame对象的列和索引之间的转化
2019/06/25 Python
Python pygame绘制文字制作滚动文字过程解析
2019/12/12 Python
详解Python IO编程
2020/07/24 Python
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
2020/10/22 Python
css3模拟jq点击事件的实例代码
2017/07/06 HTML / CSS
size?瑞典:英国伦敦的球鞋精品店
2018/03/01 全球购物
美德少年事迹材料500字
2014/08/19 职场文书
2014城乡环境综合治理工作总结
2014/12/19 职场文书
2016秋季田径运动会广播稿
2015/12/21 职场文书
导游词之唐山景点
2019/12/18 职场文书
Python中的datetime包与time包包和模块详情
2022/02/28 Python