python图像处理,float[0.0, 1.0]转uint8[0, 255],cv2.imwrite()图像全黑问题_python 浮点转换成uint8-程序员宅基地

技术标签: python  opencv  


先上代码

img*=250.0
img = img.astype(np.uint8)

一、问题描述

cv2.imshow()能显示图像,但cv2.imwrite()保存的图片是近乎全黑的imwrite()
print(img),部分截图如下
在这里插入图片描述

查看图片数组的 数据类型

print(img.dtype)

现在的格式是float32,本应该要是0-255的整数才行,使用cv2.imwrite()保存能正常cv.imshow的图像是近乎全黑的,然后我后面处理完的图像都错乱了,
在这里插入图片描述
找了好久也没找到合适的答案,可能是我太菜了,这种小问题没人在意。。。
最后看了uint8转float之后发现就是把0-255的整数转成1/255倍的0-1浮点数,于是我按照这种思路把代码改了一下,原代码在哪看的忘了,在一段代码里面发现的两行,懒得贴了。

二、解决方法

转换一下图片数组的数据类型就好了,float[0.0 - 1.0]数据格式的图片img*255.0,再转成uint8[0-255]
代码(python):

img*=250.0
img = img.astype(np.uint8)

看一下结果

//查看数据类型
print(img.dtype)
//图片是否是cv2格式
print("cv2? ",isinstance(img,np.ndarray))

在这里插入图片描述
后续的处理也正常了,最后正常显示处理结果。
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_39039425/article/details/105830920

智能推荐

数学建模算法python源码_如何使用python完成数学建模常见算法-程序员宅基地

文章浏览阅读997次。在数学建模中主流的编程语言是MATLAB,但随着python/R中数学软件包的不断完善,熟悉这两种编程语言的同学也可以快速数学建模的编程环节。后面我们将介绍几种常见数学建模算法的python实现,旨在展示python在本领域的强大威力。1问题描述你希望通过几种常见算法的实现,了解python在数学建模中的能力。2解决方案python除了丰富的原生数据结构外,拥有强大的第三方软件包支持,例如矩阵运算..._数模源码

三、防火墙配置(1)---防火墙常规配置_配置防火墙最后一步-程序员宅基地

文章浏览阅读7.2k次,点赞8次,收藏77次。一、实验内容1、在GNS中创建如下图所示的网络拓扑结构。2、给路由器和防火墙按照拓扑图中的规划,配置好IP地址和路由表。给R1、R2、R4、R6开启远程连接。3、验证防火墙默认安全规则,高安全级别接口(inside)可主动访问低安全级别接口(outside);低安全级别接口(outside)不能主动访问高安全级别接口(inside)。4、在防火墙上配置ACL,使R1和R2可以ping通..._配置防火墙最后一步

linux下程序启动后后台运行实现-程序员宅基地

文章浏览阅读369次。关于linux下的程序运行很简单,将源码编译成二进制(假设为proram)文件后直接在命令行运行即可,root#./program如果需要后台运行,即不占用当前终端,这在嵌入式linux显得十分有必要,因为一般嵌入式linux只有一个终端,通过rs232连接到电脑上,使用SercureCRT或者其他软件来与linux交互,如果当前终端被程序占用,那么就不能进行其他操作(此处不考虑可以通过..._正点原子linux的出厂程序为什么后台可以正常使用

DLS平台 : 跨境支付新篇章数字人民币将如何改变游戏规则?-程序员宅基地

文章浏览阅读331次,点赞8次,收藏9次。文章还将分析中新两国间数字货币直接兑换的可能性、香港“转数快”系统与数字人民币的互通,以及基于货币桥的央行数字货币跨境支付模式在中国与阿联酋之间的应用。通过分析数字人民币在新加坡旅游零售场景中的应用挑战、香港“转数快”系统与数字人民币的互通,以及基于货币桥的央行数字货币跨境支付模式,我们可以看到数字人民币在国际金融市场中扮演的角色越来越重要。未来,随着技术的进一步完善和国际合作的深入,数字人民币在全球范围内的应用将成为推动国际金融市场创新和发展的重要力量。3. 基于货币桥的央行数字货币跨境支付模式。

java连接mqtt(tcp、ssl单双向)_java mqtt ssl-程序员宅基地

文章浏览阅读955次,点赞10次,收藏11次。7.ssl证书的生成:必须具备主题备用名称(Subject Alternative Name)4.创建客户端:发布客户端、订阅客户端。6.配置文件相关配置。_java mqtt ssl

docker registry push 覆盖_微服务之——Harbor企业级docker仓库搭建-程序员宅基地

文章浏览阅读215次。微服务之——Harbor企业级docker仓库搭建一、Harbor简介1.Harbor介绍Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全。提升用户使用Registry构建和运行环境传输..._docker push 覆盖harbor镜像

随便推点

EBS R12.2新特性:弹性域值集安全策略_ebs 值集 安全性-程序员宅基地

文章浏览阅读1.8k次,点赞3次,收藏8次。EBS R12.2新特性:弹性域值集安全策略弹性域值集安全策略允许系统管理员限制用户访问、添加或者更新特定的值集里的值。值集安全策略使基于角色的分类职责分离键弹性域,描述性弹性域和report参数。举例来说,你可以设置值集安全性策略,比如特定用户可以查看、插入值到任何值集,这些值集被用来做账户弹性域。一些其他用户可以访问、更新Oracle Human Capital Management applications模块下的所有弹性域值集的值。你也可以通过OU、角色、职责等来实现隔离访问。值集安全策略使用一种_ebs 值集 安全性

uniapp使用scroll-view组件实现下拉刷新跟上拉加载_scroll-view 下拉刷新-程序员宅基地

文章浏览阅读5.7k次,点赞2次,收藏12次。以上就是uniapp 使用scroll-view上拉加载跟下拉刷新功能的实现方法。_scroll-view 下拉刷新

MySQL主从复制与读写分离-程序员宅基地

文章浏览阅读843次,点赞14次,收藏25次。读写分离,基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。

java 怎么读书?读不懂怎么办?读书累怎么办?不想读书怎么办?_看java书总是困-程序员宅基地

文章浏览阅读1.0k次。java 怎么读书?怎么读书?读不懂怎么办?读书累怎么办?不想读书怎么办?怎么读书?“死读书”法:用眼看,动手做,用脑理解思考总结,学以致用加工创新。读不懂怎么办?“不求甚解”式(时间充足,不懂的占少数):眼手脑过一遍,不懂就先做好标志,放一放,继续下面的阅读。“迎难而上”式(时间紧迫,不懂的占多数):遇到问题,解决问题,遇到困难,克服困难。一遍不懂,读第二遍,第三遍。这本书读不懂,我读..._看java书总是困

shader 渐变半透明效果_android shader 半透明渐变-程序员宅基地

文章浏览阅读5.1k次。// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'Shader "Custom/zhengshuang" { Properties { _MainTex ("Texture", 2D) = "white" {} _AlphaLX("RangeAlphaLX",Float) = 0 ..._android shader 半透明渐变

oracle操作字符串:拼接、截取、查找、替换_oracle拼接字符串函数-程序员宅基地

文章浏览阅读3w次,点赞19次,收藏91次。1、拼接字符串格式一:可以使用"||"来拼接字符串select '拼接'||'字符串' as str from dual 格式二:通过concat()函数实现select concat('拼接', '字符串') as str from dual 注:oracle的concat函数只支持两个参数的方法,即只能拼接两个参数,如要拼接多个参数则嵌套使用concat可实现,如:select concat(concat('拼接', '多个'), '字符串') from dual 2.1、截取字符串_oracle拼接字符串函数