1.Python3 OpenCV3像处理-色彩空间
2.cvCvtColor概况
Python3 OpenCV3像处理-色彩空间
色彩空间(Color Space)是一种用数学坐标表示色彩的概念,通过这种坐标,可以将不同频率光线的感知转化为具体的坐标位置,从而定义色彩范围。色彩空间源于Color Space,又称为色域。高级病毒源码色彩学中的多种色彩模型通过一维、二维、三维乃至四维空间坐标表示色彩,这些坐标系统共同构成了色彩空间。
在图像处理中常见的色彩空间有:
1. RGB色彩空间:将颜色分解为红、绿、蓝三色,站长 源码查看通过这些颜色组合得到不同的色彩。它是显示设备中最常用的色彩模型。
2. HSV(Hue Saturation Value)色彩空间:由颜色的色调(Hue)、饱和度(Saturation)和值(Value)三个要素组成。HSV色彩空间便于理解和描述颜色属性。
3. HIS(Hue Intensity Saturation)色彩空间:此空间通过将Hue映射到正弦波上的苏莫源码intensity值来表示颜色,通常用于图像处理中进行色调调整。
4. YCrCb(Luminance Chrominance)色彩空间:结合了亮度和色度信息,它通常用于视频压缩和显示设备中。
5. YUV色彩空间:由亮度(Y)和色度信号(U和V)组成,U和V表示红色和蓝色差。这一色彩空间适合在电视和显示器上实现色彩还原。隐藏源码 ccs
色彩空间之间的转换是图像处理中常用的操作,最常见的有:
1. HSV与RGB之间的转换:通过HSV色彩空间实现颜色调整和分类操作,然后转换回RGB空间用于显示或存储。
2. YUV与RGB之间的转换:这一转换特别适用于视频处理和图像压缩,如在视频编码和解码中使用。
下面是zeromq源码解析一个使用OpenCV和Python执行色彩空间转换的示例代码:
python
import cv2 as cv
import numpy as np
def extract_object_demo(image):
capture = cv.VideoCapture("src/video.mp4")
while(True):
ret, frame = capture.read()
if not ret:
break;
hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)
lower_hsv = np.array([, , ])
upper_hsv = np.array([, , ])
mask = cv.inRange(hsv, lower_hsv, upper_hsv)
cv.imshow("video", frame)
cv.imshow("mask", mask)
if cv.waitKey() == :
break
def color_space_demo(image):
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
cv.imshow("gray", gray)
hsv = cv.cvtColor(image, cv.COLOR_BGR2HSV)
cv.imshow("hsv", hsv)
yuv = cv.cvtColor(image, cv.COLOR_BGR2YUV)
cv.imshow("yuv", yuv)
src = cv.imread("src/fish.jpg")
cv.imshow("import image", src)
b, g, r = cv.split(src)
cv.imshow("blue", b)
cv.imshow("green", g)
cv.imshow("red", r)
src[:, :, 2] = 0
src = cv.merge([b, g, r])
cv.imshow("changed image", src)
t1 = cv.getTickCount()
color_space_demo(src)
t2 = cv.getTickCount()
time = (t2-t1)/cv.getTickFrequency()
*print("time : %s ms" % time)
cv.waitKey(0)
cv.destroyAllWindows()
运行上述代码可展示彩色图像的原始版本以及不同色彩空间的转换效果。
cvCvtColor概况
在OpenCV库中,cvCvtColor是一个关键的功能函数,专门用于颜色空间的转换,其主要作用是将图像从RGB色彩模型转换到其他诸如HSV或HSI等色彩模型,或者将彩色图像转为灰度图像。
其中,最常见的用法有两个参数,如CV_BGR2GRAY,它表示将RGB图像直接转换为灰度图像,而CV_GRAY2BGR则表示将灰度图像恢复回RGB模式。这两个参数的使用非常直观,即一个是彩色到灰度的转变,另一个则是灰度到彩色的反向转换。
cvCvtColor的主要作用在于处理彩色图像时,当你需要进行灰度处理,或者在不同色彩空间之间进行切换时,这个函数就派上了用场。它的输出结果如果是彩色图像,那么从RGB到灰度的转换操作就会自动完成,反之亦然。通过这个函数,开发者可以方便地调整图像的颜色表示形式,以满足不同的视觉分析或处理需求。