繁体   English   中英

本地计算机上的图像可以在图像查看器上正确显示,但是在使用cv2.imread()时无法正确读取?

[英]An image on local machine is displayed properly on image viewer but is not read properly while using cv2.imread()?

我送一个base64形象的flask服务器。 然后,使用文件处理将base64映像解码并保存在我的本地计算机上。 保存文件后,我使用opencv 2.0函数imread读取图像并使用imshow进行显示。 但是它会显示全黑图像(numpy数组全为零)。 使用图像查看器可以正确显示图像。 有什么可能的解决方案?

我尝试用matplotlib替换OpenCV,但是它也不起作用。 甚至添加了imread_unchanged,以便不裁剪返回的图像。

image_64_encoded="contains base64 encoded image"
fh = open("imageToSave.png", "w")
fh.write(image_64_encoded.decode('base64'))
fh.close()
script_dir = os.path.dirname(__file__) 
rel_path = "../shape-detection/imageToSave.png"
abs_file_path = os.path.join(script_dir, rel_path)
print("\n",abs_file_path,"\n\n")
image = cv2.imread(abs_file_path)
print(image);
cv2.imshow('image',image)

预期结果必须与图像查看器显示的结果相同。 但它显示纯黑色图像。

来自图像查看器的实际图像

来自图像查看器的实际图像

由cv2.imshow()显示的图像

由cv2.imshow()显示的图像

信息全部在alpha通道中,而不在RGB通道中。

您需要使用:

image = cv2.imread(path,cv2.IMREAD_UNCHANGED)

并查看第四个频道(alpha):

usefulchannel = image[:,:,3]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM