首页 > 解决方案 > 将 MatplotLib 应用于 OpenCV 图像

问题描述

有我的图,在此处输入图像描述

当我在 matplotlib 中使用以下代码时,我可以得到这样的图片:

在此处输入图像描述

import cv2 
import numpy as np
import matplotlib.pyplot as plt
from skimage.color import rgb2hed
from matplotlib.colors import LinearSegmentedColormap

roi_select = cv2.imread(r"C:\Users\hutao\Desktop\cell.png")
roi_select_11 = rgb2hed(roi_select)
cmap_dab = LinearSegmentedColormap.from_list('mycmap', ['white','saddlebrown'])
plt.imshow(roi_select_11[:,:,0],cmap=cmap_dab)

但是当我使用 OpenCV 时,有我的代码:

def get_mpl_colormap(cmap_name):
    cmap =   LinearSegmentedColormap.from_list('mycmap', ['white','saddlebrown'])
    sm = plt.cm.ScalarMappable(cmap=cmap)
    color_range = sm.to_rgba(np.linspace(0, 1, 256), bytes=True)[:,2::-1]
    return color_range.reshape(256, 1, 3)

roi_select = cv2.imread(r"C:\Users\hutao\Desktop\cell.png")
image_bgr = cv2.applyColorMap(roi_select[:,:,0],get_mpl_colormap('bwr'))
cv2.imshow('image with colormap', image_bgr)
cv2.waitKey()

我无法获得相同的图片,有 OpenCV 的图片 在此处输入图像描述 如何在 OpenCV 中获得相同的图片,如图 2?

我是OpenCV的新手,谢谢你的回答!

标签: pythonopencvmatplotlibscikit-image

解决方案


为了快速修复,您可以执行

image_bgr = cv2.applyColorMap(255 - roi_select[:,:,0],get_mpl_colormap('bwr'))
cv2.imshow('image with colormap', image_bgr)
cv2.waitKey()

推荐阅读