首页 > 解决方案 > 如何为要使用 matplotlib 显示的照片选择颜色类型?

问题描述

我想知道是否可以将其更改[cmap="gray"]为其他颜色,例如“cmap=yellow or blue”,但它没有那样工作。我认为库中已经设置了一些颜色类型,因为我没有定义灰色。但是当我放 时cmap="gray",它以灰色打印图片。有人可以为我解释一下吗?提前感谢您的帮助^^

------下面是我正在处理的代码-----[它在我要问的“第 3 行” ]

#[line 1] 
import cv2
import numpy as np
from matplotlib import pyplot as plt

#[line 2] 
image = cv2.imread("images/cybertruck.jpg", cv2.IMREAD_GRAYSCALE)

#[line 3]
plt.imshow(image, cmap="gray")
plt.axis("off")
plt.show()

标签: pythonmatplotlib

解决方案


Matplotlib 对现有颜色图有很好的概述。对于黑白图像,任何“顺序颜色图”都可以。请注意,有些人的黑暗和光明是相反的。在名称末尾附加“_r”将反转它们。例如,要查看负片图像,请选择cmap="gray_r"

请注意,如果您想在cmap="gray". 向下滚动文档页面以查看它们的外观,或尝试使用您自己的图像。

生成许多​​示例的一些代码:

import cv2
from matplotlib import pyplot as plt
from math import ceil

cmap_list1 = ['viridis', 'plasma', 'inferno', 'magma', 'cividis']
cmap_list2 = ['Greys', 'Purples', 'Blues', 'Greens', 'Oranges', 'Reds',
              'YlOrBr', 'YlOrRd', 'OrRd', 'PuRd', 'RdPu', 'BuPu',
              'GnBu', 'PuBu', 'YlGnBu', 'PuBuGn', 'BuGn', 'YlGn']
cmap_list3 = ['binary', 'gist_yarg', 'gist_gray', 'gray', 'bone', 'pink',
              'spring', 'summer', 'autumn', 'winter', 'cool', 'Wistia',
              'hot', 'afmhot', 'gist_heat', 'copper']
cmap_list4 = ['ocean', 'gist_earth', 'terrain', 'gist_stern',
              'gnuplot', 'gnuplot2', 'CMRmap', 'cubehelix', 'brg',
              'gist_rainbow', 'rainbow', 'jet', 'nipy_spectral', 'gist_ncar']
image = cv2.imread("test_image.jpg", cv2.IMREAD_GRAYSCALE)

# cmap_list = cmap_list1 + cmap_list2
cmap_list = cmap_list3 + cmap_list4
try_reversed_map = False
ncols = 7
nrows = int(ceil(len(cmap_list) / ncols))
if nrows <= 1: nrows = 2  # subplots returns single list instead of matrix when nrows=1
fig, axs = plt.subplots(ncols=ncols, nrows=nrows, figsize=(14, 4 * nrows))

for i in range(nrows):
    for j in range(ncols):
        ax = axs[i, j]
        ax.axis("off")
        if i * ncols + j < len(cmap_list):
            cmap = cmap_list[i * ncols + j]
            if try_reversed_map:
                cmap += "_r"
            ax.imshow(image, cmap=cmap)
            ax.set_title(cmap)
plt.show()

示例图像


推荐阅读