iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >关于python中不同函数读取图片格式的区别浅析
  • 813
分享到

关于python中不同函数读取图片格式的区别浅析

2024-04-02 19:04:59 813人浏览 八月长安

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

摘要

目录前言:关于uint8和float型数据一、skimage.io。二、imageio补充:python处理图像转化为uint8格式总结前言:关于uint8和float型数据 为了节

前言:关于uint8和float型数据

为了节省存储空间,图像一般存储在一种特殊的数据类型——uint8(8位无符号整数)中,以此方式存储的图像称作8位图像。

imread把灰度图像存入一个8位矩阵,当为RGB图像时,就存入8位RGB矩阵中。

因此,通过matlab以及各种Python包(skimage,imageio)读入图像的数据类型都是uint8的,而在数据运算中,如果不转换成double格式,计算可能会产生溢出。

总之先记住一句话:uint8用来存储和显示(imshow),double用来运算。

一、skimage.io。

读取方法: skimage.io.imread('图片地址')

返回的格式是uint8格式的数组

二、imageio

读取方法: imageio.imread('图片地址').

返回的格式是一个imageio.core.util.Image类,其里边的元素也是uint8格式的。

以上两种类型均可以通过skimage.img_as_float转换成float64格式的图片。

转换公式为::

元素转换前后对比: 67(uint8) →→→ 0.2627(float64)。

在程序中的相互转换:

1)把uint8转换成float

转换成float64。只需要利用skimage.img_as_float()函数即可。

如果需要转换成float32格式,在float64的基础上加上:.astype(np.float32)即可。

示例:

img = skimage.img_as_float(img)#从uint8转换成float364
img = skimage.img_as_float(img).astype(np.float32)#从uint8转换成float32

2)把float64转换成uint8

这是目前来说找到的既能达到目的又不使图像失真的方法了:分别利用skimage包和numpy中的函数进行转换,如果直接用numpy函数进行转换,会使图像失真。

img = skimage.img_as_float(img)#先转换成uint16的格式。
img = np.uint8(img)#再转换成uint8的格式。

总结:以上的转换中可以看出:能用图形处理包的格式转换函数就别用numpy中的格式转换函数,否则会出现各种各样的问题。

附:不同数据类型的对比:

Data typerange
uint80 to 255
uint160 to 65535
uint320 to 232
float-1 to 1 or 0 to 1
int8-128 to 127
int16-32768 to 32767
int32-231 to 231 - 1

补充:python处理图像转化为uint8格式

在python图像处理过程中,遇到的RGB图像的值是处于0-255之间的,为了更好的处理图像,通常会将图像值转变到0-1之间

这个处理的过程就是图像的uint8类型转变为float类型过程。img.astype('uint8')/255

float类型取值范围 :-1 到1 或者 0到1

总结

到此这篇关于python中不同函数读取图片格式的区别的文章就介绍到这了,更多相关python读取图片格式的区别内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 关于python中不同函数读取图片格式的区别浅析

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

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

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

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

下载Word文档
猜你喜欢
  • 关于python中不同函数读取图片格式的区别浅析
    目录前言:关于uint8和float型数据一、skimage.io。二、imageio补充:python处理图像转化为uint8格式总结前言:关于uint8和float型数据 为了节...
    99+
    2024-04-02
  • 浅析php中函数调用函数的不同方式
    在PHP中,函数调用可能是程序中最常用的操作之一。但是,当你需要一个函数调用另一个函数的时候,你需要了解一些细节。在本文中,我们将讨论PHP中函数调用函数的不同方式,以帮助你更好地理解这个过程。直接调用最基本的方式调用函数是直接在代码中调用...
    99+
    2023-05-14
    php 函数
  • 怎么在python中读取不同格式的文件
    怎么在python中读取不同格式的文件?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。python是什么意思Python是一种跨平台的、具有解释性、编译性、互动性和面向对象的...
    99+
    2023-06-15
  • 如何使用Python实时读取不同格式的数组文件?
    随着数据分析和机器学习的发展,对于不同格式的数组文件的读取需求变得越来越重要。Python作为一种高效且易于使用的编程语言,拥有丰富的数据读取库,使得读取不同格式的数组文件变得更加容易。本文将介绍如何使用Python实时读取不同格式的数组文...
    99+
    2023-07-05
    实时 数组 文件
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作