【问题标题】:Unclear difference in displaying the same image by opencv and matplotlibopencv 和 matplotlib 显示同一张图片的区别不明显
【发布时间】:2022-08-14 18:19:24
【问题描述】:

在我从事图像处理工作的过程中,我遇到了一个我不清楚的奇怪现象。

我的图像尺寸为:(256, 256, 1) 当我使用以下代码使用 opencv 显示它时:

cv2.imshow(\'image\', image)
cv2.waitKey()

我得到以下结果:

相反,当我使用以下代码使用 matplotlib 显示它时:

plt.imshow(image, cmap=\"gray\")

我得到以下结果:

就我而言,第二个结果是理想的结果- 我的问题是如何制作这样的图像(仅通过代码,无需保存到文件并加载图像)并制作它,以便我在 opencv 中也获得相同的图像。

我研究了这个问题,但没有找到解决方案。

This reference 帮助我理解了一般原因,但在这种情况下,我仍然不知道如何在 opencv 中显示图像,如 matplotlib 视图。

谢谢!

  • matplotlib 使用颜色映射。查找 cmap=\"gray\" 的 LUT 并将其与 cv.applyColorMap 一起使用以达到相同的结果
  • 我也试过:cv2.applyColorMap(image, cv2.COLORMAP_JET) 并得到这个错误:cv2.error: OpenCV(4.5.5) D:\\a\\opencv-python\\opencv-python\\opencv\\modules\\imgproc\\src\\colormap.cpp:736: error: (-5:Bad argument) cv::ColorMap only supports source images of type CV_8UC1 or CV_8UC3 in function \'cv::colormap::ColorMap::operator ()\'
  • 与颜色图无关。与值范围和数据类型有关。探索image.max() 和image.dtype
  • 谢谢!如果有一个针对我的案例更具体的示例,它可以帮助我更好地理解如何使用它们

标签: python opencv matplotlib image-processing colormap


【解决方案1】:

我把答案贴在this link,也复制到这里:

   int_image = image.astype(np.uint8)

    cv2.imshow('image', int_image)
    cv2.waitKey()
    plt.imshow(image, cmap="gray")
    plt.title("image")
    plt.show()

现在 - 这两个地块是相同的。

希望这可以帮助更多的人在未来

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 2013-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多