常见的几种颜色类型介绍
1、彩色图像(Color Image,BGR)
- 数据类型:
uint8
- 通道数:3(BGR:蓝色、绿色、红色)
- 描述:彩色图像有三个通道,每个通道的值范围是 0 到 255,分别表示蓝色(B)、绿色(G)、红色(R)分量的强度。需要注意的是,OpenCV 默认采用 BGR 通道顺序,而不是常见的 RGB。
- 用途:适用于大多数场景下的彩色图像处理,如物体检测、图像分割等。
2、灰度图像(Grayscale Image)
- 数据类型:
uint8
(无符号 8 位整数) - 通道数:1
- 描述:灰度图像只有一个通道,每个像素点的值范围为 0 到 255,0 表示黑色,255 表示白色,中间值表示不同的灰度。
- 用途:用于简化计算,尤其在图像处理和计算机视觉任务中,灰度图像常被用于边缘检测、阈值处理等。
3、HSV图像
- H(Hue,色调):
- 范围:0 到 179(在 OpenCV 中)
- 描述:表示颜色的基本属性,如红色、蓝色、绿色等。0 表示红色,60 表示黄色,120 表示绿色,180 表示蓝色。
- S(Saturation,饱和度):
- 范围:0 到 255
- 描述:表示颜色的纯度。0 表示灰色(无色彩),255 表示最饱和的颜色。
- V(Value,明度/亮度):
- 范围:0 到 255
- 描述:表示颜色的亮度。0 表示完全黑色,255 表示最亮的颜色。
代码讲解
在上一讲的main文件中加入以下代码:
# 第二节课 图像色彩转换
def color_space_demo():
image = cv.imread('C:/Users/28267/Desktop/Python/Py_OpenCV481/python_opencv_quick_tutorial/image/3.jpg')
if image is None:
print("错误: 未发现图像或者图像不能被加载.")
# 缩放图像 由于我要显示的图像太大了,所以接下来四行我进行了一下缩放
# 将 image 图像的宽*0.2,得到新的宽度
width = int(image.shape[1] * 0.2)
# 将 image 图像的高*0.2,得到新的高度
height = int(image.shape[0] * 0.2)
# 设置宽高比
dim = (width, height)
# 缩小图像 调用 OpenCV 中的 resize 函数缩小图像
# 参数1:要缩小的图像,参数2:缩小后的图像宽高,参数3:插值方法,默认为INTER_LINEAR
resized_image = cv.resize(image, dim, interpolation=cv.INTER_AREA)
# 用 cvtColor 函数,把 resized_image 指向的图像颜色 从 BGR 转换为灰度图像
# 我们通常说RGB 但是在OpenCV中读取图像的顺序是蓝色,绿色,红色,所以叫BGR
gray = cv.cvtColor(resized_image, cv.COLOR_BGR2GRAY)
# 用 cvtColor 函数,把 resized_image 指向的图像颜色从 BGR 转换为HSV图像
hsv = cv.cvtColor(resized_image, cv.COLOR_BGR2HSV)
# 显示最开始读取的原图像
cv.imshow("resized_image", resized_image)
# 显示灰度图像 gray:灰色
cv.imshow("gray_image", gray)
# 显示HSV图像
cv.imshow("hsv_image", hsv)
cv.waitKey(0)
cv.destroyAllWindows()
将主函数部分更改为:
# 主函数运行函数 color_space_demo
if __name__ == "__main__":
color_space_demo()
main文件代码,布局:
运行效果图:
特别介绍
以后只需要在main文件中加入我们要写的函数,例如:
# 第二节课 色彩空间转换
def color_space_demo():
image = cv.imread('C:/Users/28267/Desktop/Python/Py_OpenCV481/python_opencv_quick_tutorial/image/3.jpg')
if image is None:
print("错误: 未发现图像或者图像不能被加载.")
# 缩放图像 由于我要显示的图像太大了,所以接下来四行我进行了一下缩放
# 将 image 图像的宽*0.2,得到新的宽度
width = int(image.shape[1] * 0.2)
# 将 image 图像的高*0.2,得到新的高度
height = int(image.shape[0] * 0.2)
# 设置宽高比
dim = (width, height)
# 缩小图像 调用 OpenCV 中的 resize 函数缩小图像
# 参数1:要缩小的图像,参数2:缩小后的图像宽高,参数3:插值方法,默认为INTER_LINEAR
resized_image = cv.resize(image, dim, interpolation=cv.INTER_AREA)
# 用 cvtColor 函数,把 resized_image 指向的图像颜色 从 BGR 转换为灰度图像
# 我们通常说RGB 但是在OpenCV中读取图像的顺序是蓝色,绿色,红色,所以叫BGR
gray = cv.cvtColor(resized_image, cv.COLOR_BGR2GRAY)
# 用 cvtColor 函数,把 resized_image 指向的图像颜色从 BGR 转换为HSV图像
hsv = cv.cvtColor(resized_image, cv.COLOR_BGR2HSV)
# 显示最开始读取的原图像
cv.imshow("resized_image", resized_image)
# 显示灰度图像 gray:灰色
cv.imshow("gray_image", gray)
# 显示HSV图像
cv.imshow("hsv_image", hsv)
cv.waitKey(0)
cv.destroyAllWindows()
再把主函数部分改成我们新写的函数名,例如
# 主函数运行函数 color_space_demo
if __name__ == "__main__":
color_space_demo()
即可运行我们新写的代码。