Image 使用cv2.imwrite保存时获取黑色图像
我试图在计算图像的局部熵后保存图像。我尝试了Image 使用cv2.imwrite保存时获取黑色图像,image,cv2,Image,Cv2,我试图在计算图像的局部熵后保存图像。我尝试了cv2.imwrite,但它保存了黑色图像。我尝试了io.imsave。它保存了图像,但由于float32到uint8的转换而导致有损转换。如何保存图像而不丢失?您有两种选择。保存为支持浮点值的格式,例如: 争吵 PFM EXR-如@Rotem在评论中所建议 或者,使用cv2.normalize()将数据的范围和类型规范化为: 0..255uint8并另存为JPEG或PNG,或 0..65536uint16并另存为PNG 通常,如果图像看起来
cv2.imwrite
,但它保存了黑色图像。我尝试了io.imsave
。它保存了图像,但由于float32
到uint8
的转换而导致有损转换。如何保存图像而不丢失?您有两种选择。保存为支持浮点值的格式,例如:
- 争吵
- PFM
- EXR-如@Rotem在评论中所建议
cv2.normalize()
将数据的范围和类型规范化为:
- 0..255
并另存为JPEG或PNG,或uint8
- 0..65536
并另存为PNGuint16
通常,如果图像看起来是黑色或接近黑色,这是因为这些值都很低,并且图像的对比度有限。您只需在终端中使用ImageMagick即可提高对比度:
magick DARKIMAGE.png -auto-level OUTPUT.png
对于
io.imsave
我得到了以下警告:从float64到uint8的有损转换。范围[3.1201322583795204,7.1100765084596]。在保存之前将图像转换为uint8以抑制此警告。
如何解决此问题?请看我喜欢的浏览。曝光。重新缩放强度(img,in_range='image',out_range=(0255))
。这与ImageMagick-auto-level的作用相同,因为它会自动查找输入范围,并允许您为输出指定0到255或0到1或所需的值range@fmw42好消息,谢谢。