【646】灰度图array转为RGB三通道array

摘要:
可以使用两种方法:numpy可以通过cv2.cvtColor函数自行实现。灰度图像可以转换为RGB的所谓灰度图像,分成三个通道,这意味着三个通道都是相同的信息,相当于相同维度信息的重复。主要通过numpy实现。阵列,其可以类似于广播的形式实现。

  两种方法可以实现:

  • 通过 numpy 自己实现
  • 通过 cv2.cvtColor 函数实现,灰度图转 RGB

  所谓的灰度图转为三通道,就是三个通道都是一样的信息,相当于相同维度信息的重复,主要是通过 numpy.array 来实现,其实是可以通过类似广播的形式来实现。

1. 每一行赋值相同的内容

>>> a = np.zeros((3,3))
>>> a
array([[0., 0., 0.],
       [0., 0., 0.],
       [0., 0., 0.]])
>>> b = np.arange(3)
>>> b
array([0, 1, 2])
>>> a[:, :] = b   # 等价于 a[...] = b
>>> a
array([[0., 1., 2.],
       [0., 1., 2.],
       [0., 1., 2.]])

2. 每一列赋值相同的内容

>>> a = np.zeros((3,3))
>>> a
array([[0., 0., 0.],
       [0., 0., 0.],
       [0., 0., 0.]])
>>> b = np.arange(3)
>>> b
array([0, 1, 2])
>>> c = b.reshape((3,1))
>>> c
array([[0],
       [1],
       [2]])
>>> a[...] = c
>>> a
array([[0., 0., 0.],
       [1., 1., 1.],
       [2., 2., 2.]])

3. 灰度图转为RGB三通道

  • 灰度图是二维数据,首先通过 np.expand_dims() 增加一个维度
  • 然后直接通过赋值即可以填充其他三个通道为相同的信息

  原图的 RGB 显示

import cv2 
from PIL import Image

img = cv2.imread("yingmu.jpg")
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

display(Image.fromarray(img)) 

【646】灰度图array转为RGB三通道array第1张

  RGB 转为 灰度图

gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)

display(Image.fromarray(gray))

【646】灰度图array转为RGB三通道array第2张

  灰度图转为 RGB

# 通过 cv2 函数
img = cv2.cvtColor(gray, cv2.COLOR_GRAY2RGB)

# 通过 numpy 实现
img_arr = np.zeros_like(img)
img_arr[...] = np.expand_dims(gray, axis=-1)

# 用来判断两者是否相同,结果是 True
(img == img_arr).all()

  关于判断两个 numpy.array 是否相同参考博文:Numpy中判断两个数组是否相等

免责声明:文章转载自《【646】灰度图array转为RGB三通道array》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇20、EVE-NG华丽登场Openstack镜像,体验私有云!MIPS学习笔记(一)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Yii的rules验证(表单字段验证)

Yii的rules验证(表单字段验证)  yii 验证rulesit 分类: Yii yii的rules验证 cValidator主要属 性 attributes ,builtInValidators,enableClientValidation,message,on,safe,skipOnError  经常用到的属性有 attributes,builtIn...

指针偏移量的理解

今天刷题的时候碰到如下的一道题: int main() { int array[2019] = { 0 }; array[19] = 2019; unsigned long offset = (unsigned long)((short*)array + 2019) - (unsigned long)(array + *(unsigned char...

Js--String、Date、Array对象

/* * String 对象 属性 length 方法 */ //String的length属性 var strL = "abcde"; document.write("<br/>"); document.write("属性:" + strL.length); //String的方法 document.write("<br/>"...

VC:CColorDialog(COLORREF)

// CColorDialog dlg(RGB(255, 0, 0), CC_FULLOPEN); //dlg.DoModal(); //CColorDialog( COLORREF clrInit = 0, DWORD dwFlags = 0, CWnd* pParentWnd = NULL ); /* CColorDialog dlg; if (dlg...

颜色空间

颜色空间 摘自:http://blog.csdn.net/juyingmin/article/details/5689591  (注:做了一些完善工作) 1,CMY/CMYK颜色空间         青、品红、黄(CMY)(Cyan、Magenta、Yellow)彩色模型是彩色图象印刷行业使用的彩色空间,在彩色立方体中它们是红、绿、蓝的补色,称为减色基,而...

海量用户-高并发SAAS产品测试上线流程

海量用户高并发SAAS产品测试上线流程 SAAS产品测试上线流程-以Web插件产品为例子 1概述 在互联网产品中,IT公司之间更加注重产品功能之间的协作,SAAS形态的产品扮演着越来越重要的作用。 一个典型的完全由宿主代理的SAAS服务的通讯流程如下图: 这样的产品一般具有如下特点: 一般由第三方提供专门的服务 通常以网络为媒介来提供服务 具备嵌入的...