Sid*_*thy 0 python opencv image-processing matplotlib
我正在尝试使用matplotlib savefig()保存灰度图像。我发现使用matplotlib savefig()之后保存的png文件与代码运行时显示的输出图像有些不同。代码运行时生成的输出图像包含的详细信息比保存的图形还多。
如何以所有细节都存储在输出图像中的方式保存输出图?
我的代码如下:
import cv2
import matplotlib.pyplot as plt
plt.figure(1)
img_DR = cv2.imread(‘image.tif',0)
edges_DR = cv2.Canny(img_DR,20,40)
plt.imshow(edges_DR,cmap = 'gray')
plt.savefig('DR.png')
plt.show()
Run Code Online (Sandbox Code Playgroud)
输入文件('image.tif')可以在这里找到。
以下是代码运行时生成的输出图像:
以下是保存的图像:
尽管上述两个图像表示同一张图片,但您可以注意到它们略有不同。敏锐地观察两个图像的圆形边缘,表明它们是不同的。
将实际图像保存到文件中,而不是该图。图形与您根据处理实际创建的图像之间的DPI将有所不同。由于您使用的是OpenCV,请使用cv2.imwrite。在您的情况下:
cv2.imwrite('DR.png', edges_DR)
Run Code Online (Sandbox Code Playgroud)
使用PNG格式是因为JPEG有损,因此会降低质量,从而无法缩小文件大小。如果精度是关键,请使用无损压缩标准,PNG就是一个例子。
如果您某种程度上反对使用OpenCV,则Matplotlib有一种等效的图像写入方法,称为imsave,其语法与cv2.imwrite:
plt.imsave('DR.png', edges_DR, cmap='gray')
Run Code Online (Sandbox Code Playgroud)
请注意,我正在将颜色映射强制为灰度,imsave因为它不会像OpenCV如何将图像写入文件那样自动推断出来。
| 归档时间: |
|
| 查看次数: |
1424 次 |
| 最近记录: |