关于opencv中的颜色模型转换之CV_BGR2HSV
2017-08-04 16:53
483 查看
1.opencv函数cvCvtColor(rgb_im,hsv_im,CV_BGR2HSV)中使用的RGB颜色空间转到HSV算法:
max=max(R,G,B)
min=min(R,G,B)
if R = max, H = (G-B)/(max-min)
if G = max, H = 2 + (B-R)/(max-min)
if B = max, H = 4 + (R-G)/(max-min)
H = H * 60
if H < 0, H = H + 360
V=max(R,G,B)
S=(V-min)/V,ifV=0,S=0,(对于8bit虽然帮助文档上如是写S=(V-min)*255/V,但实测S:0~1)
因此,对于8bit图像可直接输入,根据该算法所得结果中:范围H:0~360,S:0~1,V:0~255,
2.图像精度转换cvConvertScale()
通常我们获取的图像深的为IPL_DEPTH_8U,而上述hsv_im已超出该范围。因此我们定义hsv_im的深度为IPL_DEPTH_32F,而源图像为IPL_DEPTH_8U,如果直接调用函数cvCvtColor会出项输入不匹配的错处,因此要将源图像转换到IPL_DEPTH_32F深度,并归一化像素值。这一步使用cvConvertScale(hsv_im,hsv_im_float,1/255),然后调用cvCvtColor(hsv_im_float,hsv_im,CV_BGR2HSV)即可得到正确的HSV值,但HSV值与matlab有一定误差,原因不明。
cvtColor(temp,tempGray,CV_BGR2GRAY);
max=max(R,G,B)
min=min(R,G,B)
if R = max, H = (G-B)/(max-min)
if G = max, H = 2 + (B-R)/(max-min)
if B = max, H = 4 + (R-G)/(max-min)
H = H * 60
if H < 0, H = H + 360
V=max(R,G,B)
S=(V-min)/V,ifV=0,S=0,(对于8bit虽然帮助文档上如是写S=(V-min)*255/V,但实测S:0~1)
因此,对于8bit图像可直接输入,根据该算法所得结果中:范围H:0~360,S:0~1,V:0~255,
2.图像精度转换cvConvertScale()
通常我们获取的图像深的为IPL_DEPTH_8U,而上述hsv_im已超出该范围。因此我们定义hsv_im的深度为IPL_DEPTH_32F,而源图像为IPL_DEPTH_8U,如果直接调用函数cvCvtColor会出项输入不匹配的错处,因此要将源图像转换到IPL_DEPTH_32F深度,并归一化像素值。这一步使用cvConvertScale(hsv_im,hsv_im_float,1/255),然后调用cvCvtColor(hsv_im_float,hsv_im,CV_BGR2HSV)即可得到正确的HSV值,但HSV值与matlab有一定误差,原因不明。
cvtColor(temp,tempGray,CV_BGR2GRAY);
相关文章推荐
- opencv HSV 颜色模型(H通道取值 && CV_BGR2HSV_FULL与CV_BGR2HSV的区别)
- opencv HSV 颜色模型(H通道取值 && CV_BGR2HSV_FULL)
- opencv HSV 颜色模型(H通道取值 && CV_BGR2HSV_FULL)
- opencv HSV 颜色模型(H通道取值 && CV_BGR2HSV_FULL)
- 【OpenCV学习笔记】【函数学习】五(颜色空间转换cvCvtColor()函数)
- OpenCV 颜色空间转换参数CV_BGR2GRAY改变
- openCV转换颜色空间,建立人体肤色模型
- OpenCV 颜色空间转换参数CV_BGR2GRAY改变
- OpenCV 颜色空间转换参数CV_BGR2GRAY改变
- 【OpenCV3】颜色空间转换——cv::cvtColor()详解
- 【OpenCV3】颜色空间转换——cv::cvtColor()详解
- opencv HSV 颜色模型(H通道取值 && CV_BGR2HSV_FULL)
- opencv HSV 颜色模型(H通道取值 && CV_BGR2HSV_FULL)
- 【OpenCV】颜色空间RGB与HSV(HSL)的转换
- 关于Opencv图像的转换(YUV420sp)
- 关于opencv 中cvCreateVideoWriter函数返回NULL情况的总结
- opencv矩阵元素类型转换和cvConvertScale()函数用法
- 关于OpenCV源码中的CPU指令集CV_SSE2等的相关知识
- 关于MFC中OpenCV图像处理使用cvFindContours引起的中断错误
- OpenCV颜色转换和皮肤检测