[英]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()显示的图像
信息全部在alpha通道中,而不在RGB通道中。
您需要使用:
image = cv2.imread(path,cv2.IMREAD_UNCHANGED)
并查看第四个频道(alpha):
usefulchannel = image[:,:,3]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.