Python 将图像保存为jpg会给我纯黑色
我正在实现gabor内核,当我在运行代码时(保存之前)显示内核时,它们会给我一幅这样的图片 但是在使用cv2.imwrite将内核保存为jpg图像之后,我得到了这样的结果Python 将图像保存为jpg会给我纯黑色,python,opencv,Python,Opencv,我正在实现gabor内核,当我在运行代码时(保存之前)显示内核时,它们会给我一幅这样的图片 但是在使用cv2.imwrite将内核保存为jpg图像之后,我得到了这样的结果 有什么解释吗?如何将内核保存为第一张图片中的格式?可能有不同的原因。因此,我有两个建议: 如果使用plt.imshow()显示第一张图片,请使用plt.savefig()导出它。这应该很容易奏效 如果仍要使用cv2.imwrite()导出图像,请确保首先正确地重新缩放了图片。(请注意,如果只有一个通道,您将获得灰度图像)
有什么解释吗?如何将内核保存为第一张图片中的格式?可能有不同的原因。因此,我有两个建议:
你到底是如何显示第一张图片的?您正在使用plt.imshow吗?一旦共享了代码片段,我认为它与img数据的规格化和类型有关,如int16或float。您的图像可能是介于0和1之间的浮点值。Pyplot用于显示的颜色代码。但当保存到JPG时,它需要0到255的范围。因此,在0到255范围内,所有值都是0或1。所以那是黑色的。将图像乘以255。剪辑到0到255的范围并转换为uint8。那么除了谢谢你之外,我尝试了建议1,它成功了。我还有一个问题。现在我正在保存gabor核和使用plt.savefig生成的gabor滤波图像。我将它们保存在不同的文件夹中,但是如果在保存步骤之前使用plt.imshow(kernel),我会在两个文件夹中找到gabor内核图像,如果在保存步骤之前使用plt.imshow(filtered_img),我会在两个文件夹中看到过滤后的图像。有什么建议吗?
img = org_img
min_val,max_val=img.min(),img.max()
img = 255.0*(img - min_val)/(max_val - min_val)
img = img.astype(np.uint8)
cv2.imwrite(img,"picture.png")