机器视觉学习(四)—— 图像的色彩

目录

一、图像的基础知识

二、NumPy模块

三、图像色彩变化

3.1 RGB图像的分通道显示

3.2 HSV图像的分通道显示


一、图像的基础知识

总结的笔记:

"""
二值图:   每个像素取值 0或1,图像显示出来只有黑白色;     黑色:0      白色:1
灰度图:   每个像素8位表示(0~255)单通道显示亮度;     黑色:0     白色:255
彩色图:   每个像素有RGB三个通道分量表示,每个分量0~255,每个通道单拿出来都是一张灰度图;
   黑色(0,0,0)     白色(255,255,255)
RGB:        R:红色              G:绿色                  B:蓝色
Image(BGR),Merge(RGB):  三个图层的顺序不同,由上到下
HSV:        H:色相              S:饱和度                V:明度

OpenCV的 HSV格式中, H(色彩/色度)的取值范围是 [0,180], 
S(饱和度)的取值范围 [0,255], V(亮度)取值范围 [0,255]


图像色彩空间转换:
    cv2.cvtColor(img,code)
        img:        要更改其色彩空间的图像
        code:       色彩空间转换的代码
            cv2.COLOR_BGR2GRAY:         表示从 BGR转换为灰度图像
            cv2.COLOR_BGR2HSV:          表示从 BGR转换为 HSV图像


图层(通道)分离:
    cv2.split(img)
        img:        要分离的图像


图层(通道)合并:
    cv2.merge((a,b,c))
        a,b,c:      要合并的色彩通道


"""

二、NumPy模块

NumPy(Numerical Python)是Python科学计算的核心库之一,提供了高性能的多维数组对象(ndarray)和用于数组操作的函数。它还包括用于处理线性代数、傅里叶变换和随机数生成的工具。

下面是一些常用的 numpy 模块函数的表格:

函数描述
numpy.array()创建一个数组
numpy.zeros()创建一个指定形状和数据类型的全零数组
numpy.ones()创建一个指定形状和数据类型的全1数组
numpy.arange()创建一个指定范围和步长的数组
numpy.linspace()创建一个指定范围内等间距的数组
numpy.reshape()改变数组的形状
numpy.ndim()返回数组的维度
numpy.size()返回数组中的元素数目
numpy.dtype()返回数组的数据类型
numpy.min()返回数组的最小值
numpy.max()返回数组的最大值
numpy.mean()返回数组的平均值
numpy.sum()返回数组的和
numpy.var()返回数组的方差
numpy.std()返回数组的标准差
numpy.dot()计算两个数组的点积
numpy.transpose()反转数组的维度
numpy.vstack()垂直堆叠数组
numpy.hstack()水平堆叠数组
numpy.concatenate()按指定的维度连接数组
numpy.split()将数组分割为多个子数组
numpy.insert()将元素插入到数组的指定位置
numpy.delete()删除数组中的指定元素
numpy.copy()复制数组
numpy.sort()对数组进行排序
numpy.unique()返回数组中的唯一值
numpy.where()返回满足条件的数组元素的坐标
numpy.isnan()检查数组元素是否为 NaN
numpy.isinf()检查数组元素是否为无穷大

这只是一小部分 numpy 模块函数的示例,numpy 模块提供了许多其他功能强大的函数。你可以在 numpy 官方文档中找到更多信息:https://numpy.org/doc/icon-default.png?t=N7T8https://numpy.org/doc/

三、图像色彩变化

图像颜色通道是指图像中的每个像素所包含的颜色信息。

在彩色图像中,通常有三个颜色通道,分别是红色通道(R通道)、绿色通道(G通道)和蓝色通道(B通道)。每个通道都包含着图像中相应颜色的亮度信息,通过对这些通道的组合和调整,可以得到不同的颜色效果和色彩变化。

除了RGB颜色模式外,还有其他的颜色模式,如CMYK模式(青、品红、黄、黑)等,这些颜色模式也有对应的通道。在灰度图像中,只有一个颜色通道,代表灰度级别。

示例:(简易代码)

import cv2

# 加载图像
image = cv2.imread("image.jpg") # 在运行代码时将image.jpg替换为您的图像文件路径


# 分割图像的RGB通道
blue, green, red = cv2.split(image)

# 修改蓝色通道为0
blue = blue * 0

# 修改绿色通道为255
green = green * 0 + 255

# 修改红色通道为0
red = red * 0

# 合并修改后的通道
modified_image = cv2.merge((blue, green, red))

# 显示修改后的图像
cv2.imshow("Modified Image", modified_image)
cv2.waitKey(0)               # 等待用户按下任意键
cv2.destroyAllWindows()
 

复杂代码(需理解):

import cv2
import numpy as np

# 读取图像
image = cv2.imread('image.png')    # 在运行代码时将image.png替换为您的图像文件路径

# 提取RGB颜色通道
red_channel = image[:,:,2]
green_channel = image[:,:,1]
blue_channel = image[:,:,0]

# 将RGB颜色通道转换为不同颜色值
red_channel = np.zeros(red_channel.shape, dtype=np.uint8)  # 设置红色通道为0
green_channel = np.zeros(green_channel.shape, dtype=np.uint8)  # 设置绿色通道为0
blue_channel = np.ones(blue_channel.shape, dtype=np.uint8) * 255  # 设置蓝色通道为255

# 将修改后的颜色通道重新组合成图像
new_image = cv2.merge((blue_channel, green_channel, red_channel))

# 显示原始图像和修改后的图像
cv2.imshow('Original Image', image)        # 名称可修改
cv2.imshow('Modified Image', new_image)    # 名称可修改

# 保存修改后的图像
cv2.imwrite('output.jpg', new_image)

# 等待按下任意键关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows()
 

3.1 RGB图像的分通道显示

在OpenCV中,图像通道表示图像中的颜色信息。通常,一个彩色图像会有三个通道,分别是红色通道、绿色通道和蓝色通道。每个通道都表示了图像中对应颜色的亮度或强度。

在OpenCV中,可以使用函数cv2.split()来将彩色图像分离为各个通道。这个函数将返回一个包含各个通道的列表。

以下是一个使用OpenCV分离RGB图像通道的例子:

import cv2

# 读取彩色图像
image = cv2.imread('image.jpg')

# 分离通道
b, g, r = cv2.split(image)

# 显示分离的通道
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!



### 一、Python所有方向的学习路线



Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。



![](https://img-blog.csdnimg.cn/img_convert/9f49b566129f47b8a67243c1008edf79.png)



### 二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。



![](https://img-blog.csdnimg.cn/img_convert/8c4513c1a906b72cbf93031e6781512b.png)



### 三、全套PDF电子书



书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

![](https://img-blog.csdnimg.cn/img_convert/46506ae54be168b93cf63939786134ca.png)



### 四、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。



![](https://img-blog.csdnimg.cn/afc935d834c5452090670f48eda180e0.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA56iL5bqP5aqb56eD56eD,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)



### 五、实战案例



光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。



![](https://img-blog.csdnimg.cn/img_convert/252731a671c1fb70aad5355a2c5eeff0.png)



### 六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。



![](https://img-blog.csdnimg.cn/img_convert/6c361282296f86381401c05e862fe4e9.png)  

![](https://img-blog.csdnimg.cn/img_convert/d2d978bb523c810abca3abe69e09bc1a.png)



### 六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。



![](https://img-blog.csdnimg.cn/img_convert/6c361282296f86381401c05e862fe4e9.png)  

![](https://img-blog.csdnimg.cn/img_convert/d2d978bb523c810abca3abe69e09bc1a.png)


  • 15
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值