iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python imread函数详解
  • 818
分享到

python imread函数详解

pythonimread函数pythonimread函数讲解 2022-06-02 22:06:52 818人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

python 中各种imread函数的区别与联系 最近一直在用Python做图像处理相关的东西,被各种imread函数搞得很头疼,因此今天决定将这些imread总结一下,以免以后因此犯些愚蠢的错误。如果你正好也对此感

python 中各种imread函数的区别与联系

最近一直在用Python做图像处理相关的东西,被各种imread函数搞得很头疼,因此今天决定将这些imread总结一下,以免以后因此犯些愚蠢的错误。如果你正好也对此感到困惑可以看下这篇总结。当然,要了解具体的细节,还是应该 read the fuck codeapi document,但貌似python的很多模块文档都不是很全,所以只能多看代码和注释了。

先来看看常用的读取图片的方式:

  • PIL.Image.open
  • scipy.misc.imread
  • scipy.ndimage.imread
  • cv2.imread
  • matplotlib.image.imread
  • skimge
  • caffe.io.load_iamge

这些方法可以分为四大家族

PIL

PIL.Image.open + numpy
scipy.misc.imread
scipy.ndimage.imread

这些方法都是通过调用PIL.Image.open 读取图像的信息;
PIL.Image.open 不直接返回numpy对象,可以用numpy提供的函数进行转换,参考Image和Ndarray互相转换;
其他模块都直接返回numpy.ndarray对象,通道顺序为RGB,通道值得默认范围为0-255。

matplotlib

matplot.image.imread

从名字中可以看出这个模块是具有matlab风格的,直接返回numpy.ndarray格式通道顺序是RGB,通道值默认范围0-255。

OpenCV

cv2.imread

使用opencv读取图像,直接返回numpy.ndarray 对象,通道顺序为BGR注意是BGR,通道值默认范围0-255。

skimage

skimage.io.imread: 直接返回numpy.ndarray 对象,通道顺序为RGB,通道值默认范围0-255。
caffe.io.load_image: 没有调用默认的skimage.io.imread,返回值为0-1的float型数据,通道顺序为RGB

关于图像的一些说明

可以使用matplotlib的pyplot模块的show也可以使用cv2的imshow方法,对于这些方法只要你传入的参数是numpy.ndarray(通道值范围0-255) 就可以正常显示,不存在区别,这也可以看出numpy在python中的重要地位;但是cv2.imshow方法由于它针对的是cv2的imread 所以它内部会做通道顺序的变化,传入为BGR转换为RGB,所以你如果传入RGB显示的就是BGR了。废话说完了,看代码。

以下是测试代码

运行环境为windows10+python3.6


#encoding=utf8
from PIL import Image
import numpy as np
import cv2
import matplotlib.pyplot as plt # plt 用于显示图片
import matplotlib.image as mpimg # mpimg 用于读取图片
import skimage
import sys
from skimage import io 

#PIL
#相关:scipy.misc.imread, scipy.ndimage.imread
#misc.imread 提供可选参数mode,但本质上是调用PIL,具体的模式可以去看srccode或者document
#https://GitHub.com/scipy/scipy/blob/v0.17.1/scipy/misc/pilutil.py
imagepath='test1.jpg'
im1=Image.open(imagepath)
im1=np.array(im1)#获得numpy对象,RGB
print(type(im1))
print(im1.shape)

#2 opencv 
im2=cv2.imread(imagepath)
print(type(im2))#numpy BGR
print(im2.shape)#[width,height,3]

#3 matplotlib 类似matlab的方式
im3 = mpimg.imread(imagepath)
print(type(im3))#np.array
print(im3.shape)

#4 skimge 
#caffe.io.load_iamge()也是调用的skimage实现的,返回的是0-1 float型数据
im4 = io.imread(imagepath)
print(type(im4))#np.array
print(im4.shape)
#print(im4)


# cv2.imshow('test',im4)
# cv2.waiTKEy()
#统一使用plt进行显示,不管是plt还是cv2.imshow,在python中只认numpy.array,但是由于cv2.imread 的图片是BGR,cv2.imshow 时相应的换通道显示
plt.subplot(221)
plt.title('PIL read')
plt.imshow(im1)
plt.subplot(222)
plt.title('opencv read')
plt.imshow(im2)
plt.subplot(223)
plt.title('matplotlib read')
plt.imshow(im3)
plt.subplot(224)
plt.title('skimage read')
plt.imshow(im4)
#plt.axis('off') # 不显示坐标轴
plt.show()

##################################### cmd output################################
# <class 'numpy.ndarray'>
# (851, 1279, 3)
# <class 'numpy.ndarray'>
# (851, 1279, 3)
# <class 'numpy.ndarray'>
# (851, 1279, 3)
# <class 'numpy.ndarray'>
# (851, 1279, 3)

测试结果

这里写图片描述

总结

虽然python中没有显示的数据类型声明,但是在编程的过程中自己必须得清楚数据类型是什么,否则就有可能犯一些愚蠢的错误。

到此这篇关于python imread函数详解的文章就介绍到这了,更多相关python imread函数内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: python imread函数详解

本文链接: https://www.lsjlt.com/news/11198.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python中imread()函数怎么用
    小编给大家分享一下Python中imread()函数怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!cv2方式:# -*- coding:...
    99+
    2023-06-14
  • Python中的imread()函数用法说明
    cv2方式: # -*- coding: UTF-8 -*- import cv2 """ cv2模块--图片的读入和显示 """ image_path="D:/Pycharm...
    99+
    2024-04-02
  • python函数详解
    结构:    def  函数名():        函数体执行:    函数名()返回值:    return    一,函数中,遇到return终止函数    二,返回值,返回给了函数的调用者:函数名()    return单个值,返回单...
    99+
    2023-01-31
    详解 函数 python
  • Python Open函数详解
    这里写目录标题 一级目录二级目录三级目录1、文件IO的常见操作2、打开操作Open2.1 file 文件名2.2 mode 模式2.2.1. R模式:mode = "r"2.2.2. W模式:...
    99+
    2023-10-24
    python 开发语言 linux
  • Python isalpha()函数详解
    「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:小白零基础《Python入门到精通》 isalpha...
    99+
    2023-10-23
    python 网络安全 人工智能 机器学习
  • Python count()函数详解
    「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 ...
    99+
    2024-01-21
    人工智能 网络安全 ai
  • python常用函数random()函数详解
    目录random()random.seed()randint()random() 方法返回随机生成的一个实数,它在[0,1)范围内。 random() 返回随机生成的一个实...
    99+
    2023-02-22
    python random()函数 python random
  • python函数和python匿名函数lambda详解
    目录1. python函数1.1 函数的作用1.2 函数定义1.3 函数调用1.4 函数的参数1.4.1 参数的传递1.4.2 参数类型1.4.2.1 位置参数(必备参数)1.4.2...
    99+
    2024-04-02
  • Python中reduce函数详解
    目录1 reduce用法2 reduce与for循环性能对比reduce函数原本在python2中也是个内置函数,不过在python3中被移到functools模块中。 reduce...
    99+
    2024-04-02
  • python的函数最详解
    目录一、函数入门1.概念2.定义函数的语法格式函数名形参列表返回值3.函数的文档(注释→help)4.举例二、函数的参数1.可变对象2.参数收集(不定个数的参数)3.解决一个实际问题...
    99+
    2024-04-02
  • python 中 os.walk() 函数详解
    os.walk()是一种遍历目录数的函数,它以一种深度优先的策略(depth-first)访问指定的目录。 其返回的是(root,dirs, files), root代表当前遍历的目...
    99+
    2024-04-02
  • python 钩子函数详解
    1.with 与 __enter__ ,__exit__ with obj: expressment #进入with块时调用 obj.__enter__() #退出with块时调用 obj....
    99+
    2023-01-31
    钩子 详解 函数
  • python递归函数详解
    递归函数是指在函数定义中使用函数自身的一种编程技巧。递归函数通常包括两个部分:基本情况和递归情况,基本情况是指函数的结束条件,递归情况是指函数调用自身的情况。递归函数的特点:1、更容易理解和编写,尤其是对于一些问题,如树的遍历、阶乘计算、斐...
    99+
    2023-12-18
    python 递归函数
  • python 的sort()函数详解
    1.函数sort()是对列表就地排序 >>> x=[8,9,0,7,4,5,1,2,3,6]>>> x.sort()>>> print(x)[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]   2.函数sort()修改序列,不返...
    99+
    2023-10-01
    python 开发语言 后端
  • Python之map()函数详解
    文章目录 一、map() 函数简介1.1 map() 函数基本语法1.2 map() 函数+ lambda表达式1.3 map() 函数输入多个可迭代对象iterable1.4 查看返回的迭代...
    99+
    2023-09-24
    python 开发语言
  • python的super函数详解
    python基础知识 用于类继承的super函数介绍 目录 python基础知识 一、super函数的用途 二、了解super函数的基本信息 三、多继承不重复调用  四、多继承重复调用 总结 一、super函数的用途 ...
    99+
    2023-09-26
    python
  • python super()函数的详解
    目录super的用法super的原理总结Python是一门面向对象的语言,定义类时经常要用到继承,在类的继承中,子类继承父类中已经封装好的方法,不需要再次编写,如果子类如果重新定义了...
    99+
    2024-04-02
  • Python zip函数 详解(全)
    目录 前言1. zip函数2. 实战展示 前言 做项目的时候,经常会看到zip这个函数,索性深入了解,方便之后的学习 1. zip函数 源码:zip([iterable, ...]),it...
    99+
    2023-09-02
    python 开发语言
  • python内置函数之eval函数详解
    目录一、简介二、语法三、举例1、计算str表达式的值2、将str转换成list3、将str转换成dict四、Reference总结一、简介 eval()函数用来执行一个字符表达式的值...
    99+
    2024-04-02
  • OpenCV 读取图像imread的使用详解
    目录1、方法说明2、目前支持的文件格式3、flags参数说明4、案例教程1、方法说明 import cv2 as cv img1 =cv.imread(filename[, flag...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作