图像位深转换:64位->32位

8位深度转换为24位深度,24位深度转换为8位深度 8位深度转换为24位深度 import os import numpy as np import PIL from PIL import Image import cv2 path = "png_512/test/img" #需要转化的文件夹路径,jpg和png都能一起批量转化(8转24) for file in os.listdir(path): # print("files:",os.path.join(root,file)) filename = os.path.join(path, 阅读详情

问题描述

在深度学习的图像处理中遇到如下问题:
在这里插入图片描述

TypeError: can't convert np.ndarray of type numpy.uint16. The only supported types are: float64, float32, float16, complex64, complex128, int64, int32, int16, int8, uint8, and bool.

问题原因

问题出现,是因为 改变了图像的读取参数。之前输入的图像是通过cv2.imread(img_path)来读取的,默认读取的是彩色图像,默认情况下读入的数据类型是uint8。因为需要把图像读取方式转换为cv2.imread(img_path, cv2.IMREAD_UNCHANGED)后就出现该问题。

查看读取图像:
在这里插入图片描述
用image.dtype输出图像数据的数据类型:无问题图像的数据类型为uint8,有问题图像的数据类型为uint16。

解决方法

    if image.dtype == 'uint16':
        image = cv2.convertScaleAbs(image, alpha=(255.0/65535.0))
        print(image.dtype)

convertScaleAbs(src, dst=None, alpha=None, beta=None)通过公式 d s t = s r c ∗ a l p h a + b e t a dst = src * alpha + beta dst=src∗alpha+beta将src的数据范围转换为dst的数据范围。例如src为uint16那么对应的取值范围是0~65535,dst为uint8那么对应的取值范围是0~255。要把uint16转换为uint8,只要设置参数alpha = 255.0/65535.0,通过公式 d s t = s r c ∗ a l p h a dst = src * alpha dst=src∗alpha将数据范围从0~65535转换为0~255。

def convertScaleAbs(src, dst=None, alpha=None, beta=None): # real signature unknown; restored from __doc__
    """
    convertScaleAbs(src[, dst[, alpha[, beta]]]) -> dst
    .   @brief Scales, calculates absolute values, and converts the result to 8-bit.
    	缩放,计算绝对值,然后将结果转换为8位。
    .   
    .   On each element of the input array, the function convertScaleAbs
    .   performs three operations sequentially: scaling, taking an absolute
    .   value, conversion to an unsigned 8-bit type:
    	在输入数组的每个元素上,函数convertScaleAbs依次执行三个操作:缩放,获取绝对值,转换为无符号的8位类型:
    	
    .   \f[\texttt{dst} (I)= \texttt{saturate\_cast<uchar>} (| \texttt{src} (I)* \texttt{alpha} +  \texttt{beta} |)\f]
    
    .   In case of multi-channel arrays, the function processes each channel
    .   independently. When the output is not 8-bit, the operation can be
    .   emulated by calling the Mat::convertTo method (or by using matrix
    .   expressions) and then by calculating an absolute value of the result.
		如果是多通道阵列,该函数将独立处理每个通道。 
		当输出不是8位时,可以通过调用Mat :: convertTo方法(或使用矩阵表达式),
		然后通过计算结果的绝对值来模拟该操作。
		
    .   For example:
    .   @code{.cpp}
    .   Mat_<float> A(30,30);
    .   randu(A, Scalar(-100), Scalar(100));
    .   Mat_<float> B = A*5 + 3;
    .   B = abs(B);
    .   // Mat_<float> B = abs(A*5+3) will also do the job,
    .   // but it will allocate a temporary matrix
    .   @endcode
    .   @param src input array. 输入数组。
    .   @param dst output array. 输出数组。
    .   @param alpha optional scale factor. 可选比例因子。
    .   @param beta optional delta added to the scaled values. 可选增量添加到缩放值。
    .   @sa  Mat::convertTo, cv::abs(const Mat&)
    """
    pass

参考资料
python opencv 4.1.0 cv2.convertScaleAbs()函数 (通过线性变换将数据转换成8位[uint8])(用于Intel Realsense D435显示depth图像)
如何将图像从np.uint16转换为np.uint8?

python处理图像转化为uint8格式

图像位深解析:从8位到32位的视觉质量差异 图像位深是数字图像处理中的基础概念,指每个颜色通道存储的比特数,直接影响图像的色彩精度和动态范围。8位图像每个通道有256级色阶,适合网络发布;16位提供65536级色阶,能有效避免色带现象,适用于专业印刷和医疗影像。位深与色彩空间、压缩算法协同作用,例如广色域显示器上8位图像易出现色带,而JPEG压缩会降低有效位深。在AI图像生成和HDR视频等前沿领域,高位深(如32位浮点)正成为新标准。合理选择位深能平衡视觉质量与存储成本,是数字内容创作的关键技术决策。 阅读详情

相关推荐

【RS】遥感影像/图片64位、16位(64bit、16bit)的意义和区别

在数字图像处理中,我们常常会听到不同的位数术语,比如64位、16位和8位(64bit、16bit、8bit)。这些位数指的是图像的深度,也就是图像中每个像素可以显示的颜色数。位数越高,图像可以显示的颜色数就越多,图像的质量也就越高。本文将详细介绍图片位数的意义、区别、计算方法等。

Remote Sensing迷途小书童 3942

TypeError: can't convert np.ndarray of type numpy.uint16.

报错代码为: label= torch.FloatTensor(label) 报错 TypeError: can't convert np.ndarray of type numpy.uint16. The only supported types are: float64, float32, float16, int64, int32, int16, int8, and uint8. ...

qq_34869928的博客 1万+

海康相机SDK+halcon17(64位)+MFC+VS(64位)联合开发遇到的问题(在使用GenImage3Extern将RGB数据转换为halcon图像时出现异常情况处理)

这几天遇到了问题就是在MFC中开发SDK,遇到了问题是: 1.回调函数中的原始图像没数据,但是图像的信息是有的 这个问题的主要原因在于海康相机的默认输出数据的格式是YUYV ,并不是RGB的,因此需要设置一下即可,两种方式: 1.在海康相机的客户端进行修改即可: 2.使用MV_CC_SetPixelFormat 进行设置,具体设置如下: /...

进击的菜鸟 3450

ENVI遥感影像转8bit 20200810

ENVI遥感影像转8bit 打开ENVI,加载影像,打开Basic Tools–>Strech Data,选择需要转8bit的影像,点击确定,在下面的对话框中,修改如下参数(红框中),保存即可。

weixin_45000811的博客 3087

图像位深解析:8位与16位图像的核心差异与应用场景

图像位深(Bit Depth)是数字图像处理中的基础概念,指每个颜色通道用多少二进制位表示颜色强度。从原理上看,8位图像每个通道有256级亮度,而16位图像可达65,536级,这直接决定了图像的色彩过渡平滑度和后期处理空间。在工程实践中,高位深图像能有效避免条带效应,为摄影后期、医疗影像等专业领域提供更大调整余地。特别是在RAW格式处理和HDR合成场景中,16位工作流能显著提升图像质量。随着显示技术的发展,10位色深和HDR正在普及,但8位sRGB仍是网络传播的标准配置。理解位深与色彩空间、文件格式的关系,

weixin_29057163的博客 339

Qt中QImage用于16位图像的显示,QImage数据对齐

Qt中QImage用于16位图像的显示,QImage数据对齐 之前总结过QImage类,https://blog.youkuaiyun.com/weixin_43294620/article/details/122419099?spm=1001.2014.3001.5501 但是对于16位图像的显示没有详细说明,Qt也支持16位的图像,例如QImage::Format_Grayscale16、QImage::Format_RGBX64,以上两种格式分别是Qt5.13和5.12版本引入的,现在分别对以上两种图像进行分析,

weixin_43294620的博客 9342

图像的位深

图像形式通道数每通道位深每像素总位深每像素大小常见用途1位二值图11位1位1/8字节二值掩膜8位灰度图18位8位1字节工业检测16位灰度图116位16位2字节医学、科研24位RGB图38位24位3字节普通彩色图32位RGBA图48位32位4字节透明图像48位RGB图316位48位6字节高精度彩色图64位RGBA图416位64位8字节高精度透明图float32单通道图132位浮点32位4字节。

yan_lai的博客 558

OpenCV-Python图像像素位深表示法以及应用

本文介绍了OpenCV-Python图像像素位深表示的方法,并举例介绍在图像运算中使用位深格式来确保图像运算结果没有溢出和丢失,但在OpenCV中非8位的位深只适合作为中间图像存储使用,最终图像的位深最好还是使用8位位深,否则在多数图像软件中不能正常显示。

老猿Python 2640

纯无趣技术贴,关于色深、位深、图像深度详解

因为近期接触了一点嵌入式开发,需要的图片资源格式和以往接触的移动及web开发差别比较大,才有了下面这篇文章。因为比较晦涩,不需要的就可以绕行了。 图像深度、色深、位深的大统一 首先明确一点,图像深度就是色深Color Depth。关于色深和位深Bit-depth,查了很多资料,众说纷纭,有说色深是存储每个像素所用的bit数,而位深是描述通道的属性,那我们通常所说的24位真彩和16位全彩颜色模式,这...

weixin_33704591的博客 3860

深入理解OpenCV-Python图像位深及其应用

在计算机图形学中,每一幅图像都是由若干个像素构成的,每一个像素都有其对应的颜色信息以及位置信息。在OpenCV-Python中,图像的颜色信息可以使用不同的位深进行表示,常见的有8位、16位、32位等,而不同位深所能表达的颜色数量也不同。在图像处理中,有时需要将不同位深类型的图像进行转换。例如,从8位灰度图像转换为16位灰度图像或者从24位彩色图像转换为8位灰度图像。在OpenCV-Python中,可以对不同位深类型的图像进行像素级的加、减、乘、除等运算。2.2 图像像素运算。

laugh666的博客 567

TWAIN虚拟扫描仪:Windows 64位图像采集技术

TWAIN(Technology Without An Interesting Name)是一套定义了软件和图像捕获设备之间交互方式的工业标准协议。它的目标是简化图像的采集过程,使得来自不同厂商的扫描仪和数码相机能够被各种应用程序轻松访问和控制。TWAIN通过提供一个标准化的API,使得开发者能够在不同的硬件和软件平台之间实现无缝的图像获取。Windows 64位系统为软件提供了比32位系统更大的内存寻址能力,使得应用程序可以访问更多的内存资源,以支持复杂的计算和大量的数据处理。

weixin_36074800的博客 755

“32 位应用已死!”

曾经的经典都在逐渐消失。作者 | 马超出品 | 优快云(ID:优快云news)Android 全面拥抱 64 位 APP不久前,小米应用商店、OPPO 软件商店、VIVO 应用商店、腾...

优快云资讯 1万+

Envi4.8 破解(包含32位和64位操作系统)

Envi4.8 破解(包含32位和64位操作系统),亲自试过(本人操作系统是64位),能用~~直接覆盖安装即可

树莓派32位/64位系统对比测试!

文| Travis出品 | OSC开源社区(ID:oschina2013)近期,树莓派发布了用户期待已久的 64 位 Raspberry Pi OS,从理论上来说 64 位的操作系统能够...

4231

调试备忘录-SWD协议解析

目录--点击可快速直达 文章目录写在前面1  SWD协议简介2  SWD物理层协议解析2.1  SWD通信时序分析2.2  SWD 寄存器简介2.2.1  DP寄存器2.2.2  AP寄存器2.3  SWD通信流程2.3.1  SWD复位2.3.2  SWD读IDCODE2.3.3  SWD清除错误标志位,并且使能AP调试2.3.4  SWD读取AP IDR(也就是AP寄存器的ID CODE)2.3.5  SWD读写MCU任意寄存器 写在前面 最近由于公司需要,所以就做了个基于SWD协议的离线烧写器。由于.

洛神殇的博客 1万+

TCS34725颜色识别模块实战调校:从“一坨”例程到精准RGB

本文针对TCS34725颜色识别模块初始数据不准的问题,提供了从基础例程到精准调校的实战指南。核心在于通过白光校正与黑白光校正两种方法,补偿传感器偏差与环境光影响,将原始数据准确映射为标准RGB值。文章详细阐述了校准原理、操作步骤与代码实现,并分享了进阶调试技巧与避坑指南,帮助开发者显著提升颜色识别的准确性与项目可靠性。

weixin_29188043的博客 288

opencv读取32位/16位颜色图像

在8位颜色图像中,每个像素的颜色值的取值范围是0到255,变化更加细腻。CV_8U: 8位无符号整数 CV_8S: 8位有符号整数 CV_16U: 16位无符号整数 CV_16S: 16位有符号整数 CV_32S: 32位有符号整数 CV_32F: 32位浮点数 CV_64F: 64位浮点数 由于32位颜色的存储空间更大,opencv获取颜色位数。depth()方法获取颜色位数

qq_23172985的博客 2375

虎符+红明谷+ctfshow渔人杯赛后复现

目录标题虎符CTFWeb-签到MISC-你会日志分析吗红明谷CTFWeb-write_shellMISC-我的心是冰冰的ctfshow渔人杯签到抽奖感受下气氛神仙姐姐阿拉丁迷飘啊飘简单二维码我跟你拼了 虎符CTF Web-签到 参考详细分析PHP源代码后门事件及其供应链安全启示 根据文章提示,添加恶意请求头 User-Agentt: zerodiumphpinfo(); 可以看到phpinfo内容 继续构造,查看根目录下的文件 User-Agentt: zerodiumsystem('ls /');

Atkx's Blog 1983

8位、24位、32位图像数据转换

最近调用一个人体检测算法,算法要求输入的是图片的BGR数据,但是拿到的数据是32位Argb数据,算法无法正确进行人体检测,从网上百度文库中搜到一个C#代码,可以进行转换。网上的代码有点乱,整理了一下,记录留存。 整理后的代码如下: 1 class BitmapConvertHelp 2 { 3 struct BitmapFileHea...

weixin_30853329的博客 3003

量子计算入门指南:密度算符的核心概念与应用解析

本文深入解析了量子计算中密度算符的核心概念与应用。作为描述量子系统“状态的状态”的关键数学工具,密度算符能有效处理混合态与子系统描述,是理解量子噪声、量子纠错和开放系统演化的基石。文章通过对比纯态与混合态,阐释了密度矩阵的数学定义与物理意义,并结合代码示例演示了其在实际量子计算问题中的强大威力。

day7的博客 469

Java 类与对象 -- Java 语言的类与对象、构造器、static、final、包和 JAR

本篇文章我们将深入了解 Java 语言中的类与对象,探讨构造器、`static`、`final`、包和 JAR 文件。这些概念是面向对象编程的核心,对于理解和掌握 Java 至关重要。

栗筝i的博客 5035

IcoFormat.8bi插件下载介绍:高效格式化图标资源,支持32位与64位操作系统

IcoFormat.8bi插件下载介绍:高效格式化图标资源,支持32位与64位操作系统 【下载地址】IcoFormat.8bi插件下载介绍 IcoFormat.8bi插件是一款专为图像处理软件设计的实用工具,支持32位和64位操作系统,兼容性强。该插件在cc2018x64版本中经过严格测试,运行稳定,性能优异,能够高效处...

gitblog_06711的博客 901

基于Simulink的光伏-储能-柴油机混合微网仿真

摘要:本文基于Simulink平台构建光伏-储能-柴油机混合微网仿真模型,实现可再生能源与备用电源的协同控制。通过光伏优先、储能调节、柴油机兜底的规则控制策略,在24小时仿真中验证了系统在晴天、阴天和夜间三种典型工况下的运行性能。模型采用PVArray模块模拟光伏发电,Simscape电气库构建储能系统,自定义MATLAB函数实现柴油机启停逻辑和能量管理。仿真结果显示系统功率平衡误差<5%,储能SOC维持在20%-80%,柴油机日均运行时间<4小时,满足设计指标。文章详细说明了建模步骤、参数设置

xiaoheshang_123的博客 68

【亲测免费】 visual studio编译好的libyuv,32位和64位

visual studio编译好的libyuv,32位和64位 【下载地址】visualstudio编译好的libyuv32位和64位 visual studio编译好的libyuv,32位和64位欢迎使用本仓库提供的`libyuv`资源 ...

gitblog_09788的博客 802

【思博伦】史上最详细Spirent TestCenter测试仪使用教程精讲(一)!图解超赞超详细!!!

3. 在弹出的界面中,找到菜单栏中的“Connect/Create”,选择下拉框中的“Connect to Physical/Visual Chassis”,在弹出的对话框中输入思博伦测试仪的IP地址:192.168.6.244,点击“OK”;说明:目前我们只需要使用到Raw Stream Block,不需要用到Bound Stream Block。说明:如果要使用100G模式,由于硬件限制,必须连续3个面板端口同时配置为100G使用。打开安装包,并按照提示按照即可。

风云说通信 6478

1、动作捕捉技术:概述与历史

本博文全面介绍了动作捕捉技术的概念、历史演变、类型分类以及完整的工作流程。从早期的连续摄影技术到现代数字动作捕捉系统,文章深入探讨了光学、磁性和机械动作捕捉系统的优缺点及适用场景,并详细解析了动作捕捉数据的生成原理与数学基础。此外,还涵盖了特殊部位如手部、面部和木偶的动作捕捉方法,并讨论了动作捕捉在动画制作、虚拟现实、医疗康复等领域的广泛应用与发展前景。

apple5的专栏 220
上一篇: 引导图像滤波(Guided Image Filtering)
下一篇: numpy.minimum()和cv2.bitwise_and()
studyeboy
博客等级 码龄15年 365粉丝 329原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值