1、一般情况下HSV模型各分量的取值范围为:H为0到360°,S为0到100%,V为0到255。但是在OpenCV中在由RGB转换到HSV的过程中,发现HSV中H为0到180°,S为0到255,V为0到255。代码如下:

IplImage* src = cvLoadImage("1.jpg",1);

IplImage* imghsv = cvCreateImage(cvGetSize(src),8,3);

cvCvtColor(src ,imghsv,CV_BGR2HSV);//BGR转换成HSV模型

2、上述图片保存的过程中,图像以8位3通道的形式保存,每个颜色分量占用8位,值的范围为0到255,所以OpenCV将H值的范围缩小了一半,变为0到180°。可以调用cvConverScale将图像从8位转换为32位float型。这样HSV的范围就是:H为0到360°,S为0到100%,V为0到255。测试代码如下:

Mat mat1 = cv::imread("1.png");
CvScalar s1;
CvScalar s2;
CvScalar s3;
IplImage image1 = mat1;
int width = mat1.rows;
int height = mat1.cols; Mat mat2 = mat1.clone();
IplImage image2 = mat2; cvCvtColor(&image1,&image2,CV_BGR2HSV); IplImage* image3 = cvCreateImage(cvGetSize(&image1),IPL_DEPTH_32F,3);
cvConvertScale(&image1,image3,1.0,0); //将src图像从8位转换成32位float型变量 IplImage* imghsv = cvCreateImage(mat1.size(),IPL_DEPTH_32F,3);
cvCvtColor(image3,imghsv,CV_BGR2HSV);//BGR转换成HSV模型 for(int i=0; i<width; i++)
{
for(int j=0; j<height; j++)
{
s1 = cvGet2D(&image1, i, j);
s2 = cvGet2D(&image2, i, j);
s3 = cvGet2D(imghsv, i, j);
}
}

3、当进行HSV各分量显示的时候,可以通过cvSplit函数将各通道分离,然后通过cvConvertScale函数将各分量的范围都转化成0到255,在通过8位无符号型图像显示即可。因为cvShowImage函数只能显示8位无符号型图像,不能显示32位Float型图像。

4、当进行HSV模型还原到RGB模型时,这里使用cvCvtColor函数就要注意,输入的HSV模型的图像必须将HSV各分量还原到默认的范围。这样cvCvtColor转换后的RGB图像才是正确的。

参考:

http://blog.csdn.net/harryching/article/details/20486003

OpenCV中RGB和HSV转换的问题的更多相关文章

  1. Opencv中RGB通道/HSV通道并分离

    OpenCV中HSV颜色模型及颜色分量范围 opencv HSV 颜色模型(H通道取值 && CV_BGR2HSV_FULL) [opencv]在hsv颜色空间识别区域颜色 将原图分离 ...

  2. opencv中RGB转HSV

    cvCvtColor(src,dst,CV_BGR2HSV); 当中,src为三通道的,dst也为三通道的. OPENCV 中 H.S.V.顺序分别为3*x+0  3*x+1   3*x+2 open ...

  3. 关于opencv中的颜色模型转换之CV_BGR2HSV

    1.opencv函数cvCvtColor(rgb_im,hsv_im,CV_BGR2HSV)中使用的RGB颜色空间转到HSV算法: max=max(R,G,B) min=min(R,G,B) if R ...

  4. Delphi图像处理 -- RGB与HSV转换

    阅读提示:     <Delphi图像处理>系列以效率为侧重点,一般代码为PASCAL,核心代码采用BASM.     <C++图像处理>系列以代码清晰,可读性为主,全部使用C ...

  5. OpenCV中的图像形态学转换

    两个基本的形态学操作是腐蚀和膨胀.他们的变化构成了开运算,闭运算,梯度等.下面以这张图为例 1.腐蚀 这个操作会把前景物体的边界腐蚀掉. import cv2 import numpy as np i ...

  6. [图像类名词解释][ RGB YUV HSV相关解释说明]

    一.概述 颜色通常用三个独立的属性来描述,三个独立变量综合作用,自然就构成一个空间坐标,这就是颜色空间.但被描述的颜色对象本身是客观的,不同颜色空间只是从不同的角度去衡量同一个对象.颜色空间按照基本机 ...

  7. 颜色空间模型 与 Opencv中的HSV模型范围

    颜色空间总结 RGB.HSV.YUV 什么是颜色 Wiki是这样说的:颜色或色彩是通过眼.脑和我们的生活经验所产生的一种对光的视觉效应.嗯,简单点说,颜色就是人对光的一种感觉,由大脑产生的一种感觉.感 ...

  8. 颜色空间RGB与HSV(HSL)的转换

    一般的3D编程只需要使用RGB颜色空间就好了,但其实美术人员更多的是使用HSV(HSL),因为可以方便的调整饱和度和亮度. 有时候美术需要程序帮助调整饱和度来达到特定风格的渲染效果,这时候就需要转换颜 ...

  9. 【视频开发】OpenCV中Mat,图像二维指针和CxImage类的转换

    在做图像处理中,常用的函数接口有OpenCV中的Mat图像类,有时候需要直接用二维指针开辟内存直接存储图像数据,有时候需要用到CxImage类存储图像.本文主要是总结下这三类存储方式之间的图像数据的转 ...

随机推荐

  1. UVA - 11732 "strcmp()" Anyone? (trie)

    https://vjudge.net/problem/UVA-11732 题意 给定n个字符串,问用strcmp函数比较这些字符串共用多少次比较. strcmp函数的实现 int strcmp(cha ...

  2. POJ - 2057 The Lost House(树形DP+贪心)

    https://vjudge.net/problem/POJ-2057 题意 有一只蜗牛爬上某个树枝末睡着之后从树上掉下来,发现后面的"房子"却丢在了树上面,.现在这只蜗牛要求寻找 ...

  3. POJ 3070(求斐波那契数 矩阵快速幂)

    题意就是求第 n 个斐波那契数. 由于时间和内存限制,显然不能直接暴力解或者打表,想到用矩阵快速幂的做法. 代码如下: #include <cstdio> using namespace ...

  4. System.ComponentModel.DataAnnotations.Schema.TableAttribute 同时存在于EntityFramework.dll和System.ComponentModel.DataAnnotations.dll中

    Entity Framework 与 .net4.5 的 System.ComponentModel.DataAnnotations 都有 System.ComponentModel.DataAnno ...

  5. 019、使用公共Registry (2019-01-10 周四)

    参考https://www.cnblogs.com/CloudMan6/p/6896488.html   在DockerHub上注册一个账号,这样就可以将自己构建的镜像上传到DockerHub上供别人 ...

  6. 细说shiro之二:组件架构

    官网:https://shiro.apache.org/ Shiro主要组件包括:Subject,SecurityManager,Authenticator,Authorizer,SessionMan ...

  7. Javaweb学习笔记——(十五)—————— sql复习

    sql复习 数据库管理系统(DBMS)的概述 1.什么是DBMS:数据的仓库 *方便查询 *可存储的数据量大 *保证数据的完整.一致 *安全可靠 2.DBMS的发展:今天主流数据库为关系型数据库管理系 ...

  8. JavaScript中 return; 、return false; 与return true的区别

    工作中有时候用到  return; ,有时候用到  return false;  还有时候会用到  return true; 这三个到底是什么区别?为什么一会这个一会又那个! 1.先看下return ...

  9. CSS 快速学习

    [快速学习让我不再思考太多,更多专注在一个 box 当中,上下文朝着正交方向前进~] [Think small,]https://learnxinyminutes.com/docs/zh-cn/css ...

  10. matplotlib-形状

    需要   import matplotlib.patches as mp import numpy as np import matplotlib.pyplot as plt import matpl ...