【问题标题】:Apply MatplotLib to OpenCV image将 MatplotLib 应用于 OpenCV 图像
【发布时间】:2021-03-13 03:33:14
【问题描述】:

这是我的照片,

当我在 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的新手,谢谢你的回答!

【问题讨论】:

  • 您似乎从未使用过从get_mpl_colormap 方法获得的参数。我的意思是cmap_name。是多余的吗?
  • 这里roi_select_11 = rgb2hed(roi_select) 将RGB 转换为HED,但roi_selected 不是RGB。在 OpenCV 中,通道的标准是 BGR。
  • @ElyasKarimi 对于你的第二个问题,是的,你是对的,但我无法解决。
  • @ElyasKarimi 对于你的第一个问题,是的,这是我的错,这是多余的。
  • 为什么不先把它们转成BGR呢?你可以使用img_rgb = cv2.cvtColor(roi_select, cv2.COLOR_BGR2RGB)

标签: python opencv matplotlib scikit-image


【解决方案1】:

为了快速修复,您可以这样做

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

【讨论】:

  • 使用255 - roi_select[:,:,0]只是看起来差不多,但和图2还是有些不同。谢谢
猜你喜欢
  • 2015-09-12
  • 2019-03-01
  • 1970-01-01
  • 2017-09-08
  • 1970-01-01
  • 2012-05-15
  • 1970-01-01
  • 2022-06-11
相关资源
最近更新 更多