python 32位整数_如何使用matplotlib读取32位整数图像?

这篇博客讨论了在Python中如何使用matplotlib、PIL、scikit-image和OpenCV来读取单通道32位整数图像的问题。当matplotlib将图像读取为4通道8位整数时,作者提供了使用PIL的Image.open、scikit-image的io.imread以及OpenCV的imread函数作为替代方案,并展示了每个方法的示例代码和结果。
摘要由CSDN通过智能技术生成

我需要使用Python 2从磁盘读取 single-channel 32-bit integer TIFF image 来执行一些图像分析 . 我尝试了matplotlib的image.imread,但我无法使代码工作,因为数据被读取为4通道8位整数图像:

>>> import numpy as np

>>> import matplotlib.image as mpimg

>>> img = mpimg.imread('my_image.tif')

>>> img.shape

(52, 80, 4)

>>> img[0:2, 0:2]

array([[[255, 255, 255, 255],

[255, 255, 255, 255]],

[[255, 255, 255, 255],

[255, 255, 255, 255]]], dtype=uint8)

QUESTION :是否可以使用matplotlib读取单通道32位整数图像?

我知道有其他方法可以在Python中读取这样的图像,例如使用PIL中的Image.open:

>>> from PIL import Image

>>> img = np.asarray(Image.open('my_image.tif'))

>>> img.dtype

dtype('int32')

>>> img.shape

(52, 80)

>>> img[0:2, 0:2]

array([[8745, 8917],

[8918, 9479]])

另一种可能性是使用来自scikit-learn的io.imread:

>>> from skimage import io

>>> img = io.imread('my_image.tif')

另一种方法是利用OpenCV的imread函数 . 但在这种情况下,数据必须转换为32位整数:

>>> import cv2

>>> img = cv2.imread('my_image.tif', -1)

>>> img[0:2, 0:2]

array([[ 1.22543551e-41, 1.24953784e-41],

[ 1.24967797e-41, 1.32829081e-41]], dtype=float32)

>>> img.dtype = np.int32

>>> img[0:2, 0:2]

array([[8745, 8917],

[8918, 9479]])

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值