python 读写16bit图像的四种方法

这篇具有很好参考价值的文章主要介绍了python 读写16bit图像的四种方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

python 读写16bit图像的四种方法

应对超高清、HDR等图像增强类深度学习任务和专业图片处理任务时,我们需要对16bit图像进行读取、转tensor和保存等操作,这里总结出四种python实现的方法供参考~

1.使用 imageio ,输出图像无压缩

from imageio import imread, imsave
import numpy as np
from torchvision import transforms

#------------------------------------------------------
#  图片路径
#------------------------------------------------------
img_path = "C:\\Users\\12406\\Desktop\\tool\\000086418.tif"

#------------------------------------------------------
# 读取部分
#------------------------------------------------------
img = imread(img_path )
img1 = img.astype(np.float16)

#------------------------------------------------------
# 图片和tensor转换
#------------------------------------------------------
tensor_from_image= transforms.ToTensor()(img1)

img_from_tensor = tensor_from_image.numpy().transpose((1, 2, 0))
img_from_tensor = img_from_tensor.astype(np.uint16)
#------------------------------------------------------
# 将tensor保存为图片
#------------------------------------------------------
imsave('tensor_imageio.tif',img_from_tensor)

2.使用 openCV, 输出图像的水平分辨率和垂直分辨率被压缩

import cv2
import numpy as np
from torchvision import transforms

img_path = "C:\\Users\\12406\\Desktop\\tool\\000086460.tif"

img = cv2.imread(img_path ,-1)#uint16
img_RGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB).astype(np.float16)

tensor_from_image= transforms.ToTensor()(img_RGB)

img_from_tensor = tensor_from_image.numpy().transpose((1, 2, 0))
img_from_tensor = img_from_tensor.astype(np.uint16)
img_from_tensor = cv2.cvtColor(img_from_tensor, cv2.COLOR_BGR2RGB)

cv2.imwrite('tensor_cv2.tif',img_from_tensor)

3.使用 skimage,输出图像无压缩

import skimage.io
from torchvision import transforms
import numpy as np

img_path = "C:\\Users\\12406\\Desktop\\tool\\000086418.tif"

image_png = skimage.io.imread(img_path )
image_png = image_png.astype(np.float16)

tensor_from_image= transforms.ToTensor()(image_png)

img_from_tensor = tensor_from_image.numpy().transpose((1, 2, 0))
img_from_tensor = img_from_tensor.astype(np.uint16)

skimage.io.imsave('skimage.tif', img_from_tensor)

4.利用tifffile,输出图像无压缩

from torchvision import transforms
import numpy as np
import tifffile as tiff


img_path = "C:\\Users\\12406\\Desktop\\tool\\000086418.tif"
hdr2 = tiff.imread(img_path )

image_png = hdr2.astype(np.float16)

tensor_from_image= transforms.ToTensor()(image_png)

img_from_tensor = tensor_from_image.numpy().transpose((1, 2, 0))
img_from_tensor = img_from_tensor.astype(np.uint16)

tiff.imsave("tifffile.tif", img_from_tensor)

文章来源地址https://www.toymoban.com/news/detail-540896.html

到了这里,关于python 读写16bit图像的四种方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • pip安装python第三方库的四种方法

    pip install 库名 打开命令提示符【win + r】,输入cmd,在命令提示窗口输入pip install 库名, 再点击回车键【Enter】,就可以安装。当安装成功时,会提示successfully。例如,安装pytest库 使用该方法会存在由于网络不稳定时就无法安装成功的情况,遇到此情况时,可以多尝试几次,若

    2024年01月17日
    浏览(44)
  • Python爬虫入门之爬虫解析提取数据的四种方法

    本文主要介绍了Python爬虫入门之爬虫解析提取数据的四种方法,通过具体的内容向大家展现,希望对大家Python爬虫的学习有所帮助。 基础爬虫的固定模式 笔者这里所谈的基础爬虫,指的是不需要处理像异步加载、验证码、代理等高阶爬虫技术的爬虫方法。一般而言,基础爬

    2024年02月03日
    浏览(49)
  • C++文件读取的四种方式

    C++可以根据不同的目的来选取文件的读取方式,目前为止学习了C++中的四种文件读取方式。 C++文件读取的一般步骤: 1、包含头文件 #includefstream 2、创建流对象:ifstream ifs (这里的ifs是自己起的流对象名字) 3、打开文件:file.open(\\\"文件路径\\\",\\\"打开方式\\\"),打开文件后并判断文件是

    2024年02月11日
    浏览(40)
  • C++文件读取的四种情况

    简介:C++我们可以更具不同的目的来选取文件的读取方式,这里我会介绍C++中的四种文件读取方式。 C++文件读取的一般步骤: 1、包含头文件 #includefstream 2、实例化对象:istream file 3、打开文件:file.open(\\\"文件路径\\\",\\\"打开方式\\\"),打开文件后判断文件是否打开成功,file.is_open()返回

    2024年02月05日
    浏览(46)
  • 用 Python 从单个文本中提取关键字的四种超棒的方法

    自然语言处理分析的最基本和初始步骤是提取,在NLP中,我们有许多算法可以帮助我们提取文本数据的。本文中,云朵君将和大家一起学习四种即简单又有效的方法,它们分别是 Rake、Yake、Keybert 和 Textrank 。并将简单概述下每个方法的使用场景,然后使用附加示

    2023年04月08日
    浏览(49)
  • STM32为基础的模拟I2C通用8bit和16bit读取以及多字节读取

    GPIO模拟I2C驱动的通用代码,I2C的寄存器地址有8位和16位的,主要解决了同一个MCU同时处理8位和16位寄存器地址芯片时候的驱动问题。 以上是结构体,作为参数,其中DevAddr是芯片地址,RegAddr是寄存器地址,data_len是写入或者读取的数据长度,data_buf是写入或者读出的数据缓冲

    2024年04月28日
    浏览(41)
  • 【MySQL】根据MVCC和Read View分析事务的四种隔离级别在读写场景分别是如何体现其隔离性的

    需要云服务器等云产品来学习Linux的同学可以移步/--腾讯云--/--阿里云--/--华为云--/官网,轻量型云服务器低至112元/年,新用户首次下单享超低折扣。   目录 一、数据库并发的三种场景 二、读写场景的MVCC  1、3个(4个)记录隐藏列字段 2、undo log(撤销日志) 3、模拟MVCC场景

    2024年02月12日
    浏览(44)
  • Hive的四种排序方法

    hive排序方法,hive的排序方式 hive有四种排序方法: ORDER BY 、SORT BY 、DISTRIBUTE BY 、CLUSTER BY 0. 测试数据准备 uuid dept salary 1001 研发部 16000 1002 市场部 17000 1003 销售部 11000 1004 研发部 15000 1005 销售部 12000 1006 研发部 21000 1007 产品部 16000 1008 研发部 18000 1009 市场部 17000 1010 产品部 16

    2024年02月02日
    浏览(44)
  • 数据的四种基本存储方法

    数据的存储结构可用以下四种基本存储方法得到: ( 1 )顺序存储方法     该方法把逻辑上相邻的结点存储在物理位置上相邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系来体现。     由此得到的存储表示称为顺序存储结构  (Sequential Storage Structure),通常借

    2024年02月15日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包