【问题标题】:Matplotlib imshow low quality compared to OpenCV与 OpenCV 相比,Matplotlib imshow 质量低
【发布时间】:2015-06-29 16:18:10
【问题描述】:

我正在用 python 做一些计算机视觉,所以我同时使用 opencv 和 matplotlib。我想切换到 matplotlib 来查看图像,但我发现与 OpenCV imshow 相比,图像质量较低,而且图像在屏幕上的显示尺寸也不正确,它们的尺寸都相同。

这就是我的习惯

img = cv2.imread('a.png',0)
f = plt.figure(figsize=(img.shape[1],img.shape[0]), dpi=1)
plt.axes([0,0,1,1])
plt.axis('false')
plt.imshow(img,cmap="gray",interpolation=None)

我尝试了不同的插值值,但与 opencv 相比质量仍然非常低,是否可以显示质量更好的图像?

另外,在打印时,我得到了与 opencv 写入方法不同的低质量。

【问题讨论】:

    标签: opencv matplotlib


    【解决方案1】:

    您使图形尺寸过大。 img.shape 返回 img 中的行数和列数,但 figsize 使用英寸。

    此外,您可能希望图形具有与 dpi = 1 不同的分辨率。每英寸点数应该更接近 80,并且可能需要更高,具体取决于您显示图像的方式。

    【讨论】:

    • 好吧dpi = 1 每英寸会产生 1 个像素,所以我可以使用图像像素作为图形大小,因为现在像素 = 英寸,所以至少当我显示图像时,我认为 dpi 没有任何作用与图像的质量有关(可能是写在轴上的文本等)。无论如何,我发现制作 interpolation='none' 而不是 None 质量要好得多。我可以绕过dpi=1 的事情,使用figaspect(img) 根据当前dpi 的图像大小获取英寸,同时我仍然可以正确显示文本。
    猜你喜欢
    • 2021-12-26
    • 1970-01-01
    • 2015-07-30
    • 1970-01-01
    • 1970-01-01
    • 2017-09-26
    • 2020-01-22
    • 2019-05-29
    • 2017-06-14
    相关资源
    最近更新 更多