为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用opencv创建LAB颜色图表?

如何使用opencv创建LAB颜色图表?

猛跑小猪 2021-07-01 14:07:50
我正在开发一个项目,该项目以识别某些点的颜色为起点,为此我正在使用这些图像的 RGB 颜色绘制 3D 图形。有了这个,我已经确定了这些斑点的一些醒目的颜色,如下所示。颜色是感知和解释主观性的问题。此步骤的目的是进行识别,以便您可以在没有解释差异的情况下找到颜色模式。有了这个,我一直在网上搜索,为此,建议使用颜色空间 L * a * b *。有了这个,有人可以帮助我获得带有颜色 LAB 的图表,或者指出另一种更好地对这些斑点的颜色进行分类的方法吗?
查看完整描述

2 回答

?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

在 Python 中使用 OpenCV 非常简单。在这里,我创建了一个函数来绘制示例图像。请注意,对于此功能,图像必须是 RGB 或 BGR。


import cv2

import numpy as np

import matplotlib.pyplot as plt

from mpl_toolkits.mplot3d import Axes3D


image_BGR = np.uint8(np.random.rand(50,50,3) * 255)

#this image above is just an example. To load a real image use the line below

#image_BGR = cv2.imread('path/to/image')


def toLAB(image, input_type = 'BGR'):

  conversion = cv2.COLOR_BGR2LAB if input_type == 'BGR' else cv2.COLOR_RGB2LAB

  image_LAB = cv2.cvtColor(image, conversion)


  y,x,z = image_LAB.shape

  LAB_flat = np.reshape(image_LAB, [y*x,z])


  colors = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) if input_type == 'BGR' else image

  colors = np.reshape(colors, [y*x,z])/255.


  fig = plt.figure()

  ax = fig.add_subplot(111, projection='3d')

  ax.scatter(xs=LAB_flat[:,2], ys=LAB_flat[:,1], zs=LAB_flat[:,0], s=10,  c=colors, lw=0)

  ax.set_xlabel('A')

  ax.set_ylabel('B')

  ax.set_zlabel('L')


  plt.show()


  return image_LAB 


lab_image = toLAB(image_BGR)

结果是这样的:

//img1.sycdn.imooc.com//60ed474e000182e804570311.jpg

查看完整回答
反对 回复 2021-07-13
?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

静态地图:

//img1.sycdn.imooc.com//60ed475c000184b702540252.jpg//img1.sycdn.imooc.com//60ed476c00016f5203580254.jpg

gif地图:

//img1.sycdn.imooc.com//60ed47900001f76e03600256.jpg//img1.sycdn.imooc.com//60ed4790000115b802560256.jpg



查看完整回答
反对 回复 2021-07-13
  • 2 回答
  • 0 关注
  • 562 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信