目录
一、图像的基础知识
总结的笔记:
"""
二值图: 每个像素取值 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/https://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)