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类方法__init__和__del__构造、析构过程分析
Mar 06 Python
在Python的Django框架中更新数据库数据的方法
Jul 17 Python
Python编程入门之Hello World的三种实现方式
Nov 13 Python
Python脚本实现虾米网签到功能
Apr 12 Python
使用python实现tcp自动重连
Jul 02 Python
Python 多线程的实例详解
Sep 07 Python
使用python读取csv文件快速插入数据库的实例
Jun 21 Python
PyTorch 1.0 正式版已经发布了
Dec 13 Python
python3 动态模块导入与全局变量使用实例
Dec 22 Python
keras中epoch,batch,loss,val_loss用法说明
Jul 02 Python
Python爬虫中Selenium实现文件上传
Dec 04 Python
简述python四种分词工具,盘点哪个更好用?
Apr 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
4月1日重磅发布!《星际争霸II》6.0.0版本更新
2020/04/09 星际争霸
教你如何在CI框架中使用 .htaccess 隐藏url中index.php
2014/06/09 PHP
为PHP安装imagick时出现Cannot locate header file MagickWand.h错误的解决方法
2014/11/03 PHP
ci检测是ajax还是页面post提交数据的方法
2014/11/10 PHP
简单介绍PHP的责任链编程模式
2015/08/11 PHP
PHP利用正则表达式将相对路径转成绝对路径的方法示例
2017/02/28 PHP
PHP实现简单的模板引擎功能示例
2017/09/02 PHP
JQuery 学习笔记 选择器之六
2009/07/23 Javascript
javascript使用数组的push方法完成快速排序
2014/09/15 Javascript
javascript中clone对象详解
2014/12/03 Javascript
简单实现异步编程promise模式
2015/07/31 Javascript
JS截取字符串实例详解
2015/11/24 Javascript
Javascript 实现放大镜效果实例详解
2016/12/03 Javascript
Three.js基础部分学习
2017/01/08 Javascript
jQuery实现淡入淡出的模态框
2017/02/09 Javascript
angular.extend方法的具体使用
2017/09/14 Javascript
微信小程序学习笔记之文件上传、下载操作图文详解
2019/03/29 Javascript
[14:19]2018年度COSER大赛-完美盛典
2018/12/16 DOTA
django Serializer序列化使用方法详解
2018/10/16 Python
PYQT5设置textEdit自动滚屏的方法
2019/06/14 Python
Python中的几种矩阵乘法(小结)
2019/07/10 Python
pytorch的梯度计算以及backward方法详解
2020/01/10 Python
基于python实现语音录入识别代码实例
2020/01/17 Python
python orm 框架中sqlalchemy用法实例详解
2020/02/02 Python
使用python实现CGI环境搭建过程解析
2020/04/28 Python
OpenCV 使用imread()函数读取图片的六种正确姿势
2020/07/09 Python
德国奢侈品网上商城:Mytheresa
2016/08/24 全球购物
幼儿园老师寄语
2014/04/03 职场文书
横幅标语大全
2014/06/17 职场文书
学校领导班子对照检查材料
2014/09/24 职场文书
自主招生自荐信怎么写
2015/03/24 职场文书
企业财务管理制度范本
2015/08/04 职场文书
环境保护宣传标语大全!
2019/06/28 职场文书
开网店计划分析
2019/07/30 职场文书
使用CSS3实现按钮悬停闪烁动态特效代码
2021/08/30 HTML / CSS
常用的文件对应的MIME类型汇总
2022/04/26 HTML / CSS