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标准库之多进程(multiprocessing包)介绍
Nov 25 Python
Python网络编程详解
Oct 31 Python
Python设计模式之命令模式简单示例
Jan 10 Python
Python切片操作实例分析
Mar 16 Python
如何在Python中实现goto语句的方法
May 18 Python
如何利用pygame实现简单的五子棋游戏
Dec 29 Python
Python统计学一数据的概括性度量详解
Mar 03 Python
Python接口测试结果集实现封装比较
May 01 Python
哪些是python中web开发框架
Jun 17 Python
keras 两种训练模型方式详解fit和fit_generator(节省内存)
Jul 03 Python
Python Map 函数的使用
Aug 28 Python
Pygame如何使用精灵和碰撞检测
Nov 17 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 的 __FILE__ 常量
2007/01/15 PHP
laravel框架使用极光推送消息操作示例
2020/02/15 PHP
JavaScript 计算当天是本年本月的第几周
2009/03/22 Javascript
jQuery中DOM树操作之使用反向插入方法实例分析
2015/01/23 Javascript
基于JavaScript实现Json数据根据某个字段进行排序
2015/11/24 Javascript
jQuery图片切换动画特效
2016/11/02 Javascript
JavaScript之cookie技术详解
2016/11/18 Javascript
原生JS实现图片轮播切换效果
2016/12/15 Javascript
mui back 返回刷新页面的实例
2017/12/06 Javascript
浅谈在vue中用webpack打包之后运行文件的问题以及相关配置方法
2018/02/21 Javascript
Vue微信项目按需授权登录策略实践思路详解
2018/05/07 Javascript
Vue拖拽组件开发实例详解
2018/05/11 Javascript
为什么使用koa2搭建微信第三方公众平台的原因
2018/05/16 Javascript
JS实现的RC4加密算法示例
2018/08/16 Javascript
jQuery实现购物车的总价计算和总价传值功能
2018/11/28 jQuery
JS实现悬浮球只在一侧滑动并且是横屏状态下
2020/08/19 Javascript
Openlayers绘制聚合标注
2020/09/28 Javascript
[47:20]DAC2018 4.4 淘汰赛 Optic vs Mineski 第一场
2018/04/05 DOTA
python实现猜数字游戏(无重复数字)示例分享
2014/03/29 Python
基于Django contrib Comments 评论模块(详解)
2017/12/08 Python
Python元组及文件核心对象类型详解
2018/02/11 Python
python删除某个目录文件夹的方法
2020/05/26 Python
pandas DataFrame运算的实现
2020/06/14 Python
python3.7调试的实例方法
2020/07/21 Python
Python基于argparse与ConfigParser库进行入参解析与ini parser
2021/02/02 Python
澳洲小众品牌的集合网站:BNKR
2018/02/23 全球购物
大学生创业计划书的范文
2014/01/07 职场文书
秋季运动会通讯稿
2014/01/24 职场文书
毕业自我评价
2014/02/05 职场文书
合伙购房协议样本
2014/10/06 职场文书
服务员态度差检讨书
2014/10/28 职场文书
有关朝花夕拾的读书笔记
2015/06/29 职场文书
2016计算机专业毕业生自荐信
2016/01/28 职场文书
2019毕业典礼主持词!
2019/07/05 职场文书
排查并解决Oracle sysaux表空间异常增长
2022/04/20 Oracle
一文教你快速生成MySQL数据库关系图
2022/06/28 Redis