OpenCV中RGB和HSV转换的问题

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(s...
摘要由CSDN通过智能技术生成

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);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值