热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

pythonreadreadlinereadlines,pythonf.readlines()

pythonreadreadlinereadlines,pythonf.readlines()Python中各种imread函数的区别和联系最近在python上做图像处

  python read readline readlines,python f.readlines()

  Python中各种imread函数的区别和联系

  最近在python上做图像处理相关的事情,让各种imread函数头疼,所以今天决定把这些IM read放在一起,避免以后犯愚蠢的错误。如果你碰巧对此感到困惑,请看看这个总结。当然,要了解具体细节,还是需要看我的代码和API文档,但是python的很多模块文档看起来并不完整,只能看代码和注释。

  首先,我们来看看常见的读图方法。

  PIL。Image.open

  scipy.misc.imread

  scipy.ndimage.imread

  cv2.imread

  matplotlib.image.imread

  斯金奇

  caffe.io.loadiamge

  你知道有一个介绍这些方法性能的帖子吗?Python的各种imread函数在实现方法和读取速度上有什么区别?

  这些方法可以分为四类。

  太平航运

  PIL。Image.open numpy

  scipy.misc.imread

  scipy.ndimage.imread

  这些方法叫PIL。Image.open来读取图像的信息。

  PIL。Image.open不直接返回numpy对象,但可以使用numpy提供的函数进行转换。浏览图像和Ndarray进行相互转换;

  所有其他模块都直接返回numpy.ndarray对象。通道序列是RGB,通道值的默认范围是099 Come Come Everybody 255。

  金属材料

  matplot.image.imread

  从名字可以看出,这个模块有matlab的风格,numpy.ndarray格式的通道序列是RGB,通道值的默认范围是099 Come Come Everybody 255。

  中文版

  cv2.imread

  使用opencv导入图像并直接返回numpy.ndarray对象。频道顺序是BGR,注意是BGR,频道值的默认范围是099 Come Come Everybody 255。

  撇除

  Skimage.io.imread:直接返回numpy.ndarray对象。通道序列是RGB,通道值的默认范围是099 Come Come Everybody 255。

  Caffe.io.load_image:没有调用默认的skimage.io.imread。返回值为099的浮点数据Come Come Everybody 1,通道顺序为RGB。

  关于图像的几点注记

  可以使用show和cv2的imshow方法,它们可以使用matplotlib的pyplot模块。如果传递的参数是numpy.ndarray(通道值范围099 Come Come Everybody 255),这些方法将正确显示,没有任何区别。这也说明了numpy在python中的重要地位。但是因为cv2.imshow方法是针对cv2的imread,所以它会在内部改变通道顺序,然后传输到BGR,转换到RGB,这样传输到RGB之后就显示BGR了。废话,看代码。

  以下是测试代码

  运行环境是windows10 python3.6。

  #编码=utf8

  从pil导入图像

  进口编号为NP

  导入cv2

  Importmatplotlib.pyplotplt # PLT用于显示图像。

  importmatplotlib . imageasmpimg # mpimg用于读取图像。

  导入sk图像

  进口系统

  从skimage导入io

  #PIL

  # Related: scipy.misc.imread,scipy.ndimage.imread

  #misc.imread提供了一个可选的参数模式,但本质上是调用PIL。具体模式见srccode或document。

  # https://github.com/scipy/scipy/blob/v 0 . 17 . 1/scipy/misc/pil util . py

  imagepath=test1.jpg

  im1=image.open(imagepath)).

  Im1=NP。Array(im1) numpy对象,获取RGB

  打印(类型(im1))

  打印(im1.shape)。

  排名第二的opencv

  im2=cv2.imread(imagepath)).

  打印(类型(im2 ) ) #numpy BGR

  print(im2 . shape)#[宽度、高度和w3

  matplotlib的# 3 # 3 matlab叫w3。

  im3=MPimg.imread(imagepath)).

  print(type(im3 ) ) #np.array

  打印(im3.shape)。

  #!斯金奇

  #caffe.io.load_iamge())也由被调用的skimage实现,返回099comeeveryone 1浮点数据。

  im4=io.imread(imagepath)).

  print(type(im4 ) ) #np.array

  打印(im4.shape)。

  #打印(im4)

  #cv2.imshow(test ,im4)).

  # cv2.waitKey()))).

  #plt的统一显示。无论是PLT还是cv2.imshow,在python中都只能识别为numpy.array,但是由于cv2.imread的图像是BGR,所以在cv2.imshow的情况下会相应地改变通道进行显示

  PLT.subplot(221).

  PLT.title(pilread)).

  PLT.imshow(im1)).

  PLT.subplot(222).

  PLT.title(OpenCVread)).

  PLT.imshow(im2)).

  PLT.subplot(223).

  PLT.title(matplotlibread))。

  PLT.imshow(im3)).

  PLT.subplot(224)).

  PLT.title(skimageread).

  PLT.imshow(im4)).

  #PLT。AXIS(off) #不显示坐标轴

  plt.show())

  # # # # # # # # # # # # # # # # # # # # cmd输出# # # # # # # # # # # # # cmd输出# # # # # # # # # # # # # # .

  (851,1279和w3))。

  (851,1279和w3))。

  (851,1279和w3))。

  (851,1279和w3))。

  试验结果

  摘要

  Python没有数据类型声明,但是编程过程中你必须知道数据类型是什么。如果你不这样做,你可能会犯愚蠢的错误。

  向上向上

  作者:renelian1572



推荐阅读
  • Python实现变声器功能(萝莉音御姐音)的方法及步骤
    本文介绍了使用Python实现变声器功能(萝莉音御姐音)的方法及步骤。首先登录百度AL开发平台,选择语音合成,创建应用并填写应用信息,获取Appid、API Key和Secret Key。然后安装pythonsdk,可以通过pip install baidu-aip或python setup.py install进行安装。最后,书写代码实现变声器功能,使用AipSpeech库进行语音合成,可以设置音量等参数。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
  • 本文主要复习了数据库的一些知识点,包括环境变量设置、表之间的引用关系等。同时介绍了一些常用的数据库命令及其使用方法,如创建数据库、查看已存在的数据库、切换数据库、创建表等操作。通过本文的学习,可以加深对数据库的理解和应用能力。 ... [详细]
  • 本文介绍了Python对Excel文件的读取方法,包括模块的安装和使用。通过安装xlrd、xlwt、xlutils、pyExcelerator等模块,可以实现对Excel文件的读取和处理。具体的读取方法包括打开excel文件、抓取所有sheet的名称、定位到指定的表单等。本文提供了两种定位表单的方式,并给出了相应的代码示例。 ... [详细]
  • SpringBoot uri统一权限管理的实现方法及步骤详解
    本文详细介绍了SpringBoot中实现uri统一权限管理的方法,包括表结构定义、自动统计URI并自动删除脏数据、程序启动加载等步骤。通过该方法可以提高系统的安全性,实现对系统任意接口的权限拦截验证。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了win7系统休眠功能无法启动和关闭的解决方法,包括在控制面板中启用休眠功能、设置系统休眠的时间、通过命令行定时休眠、手动进入休眠状态等方法。 ... [详细]
author-avatar
sunshinechenxm
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有