opencv学习之图像颜色空间转换

本文介绍使用OpenCV库将RGB图像转换为HSV色彩空间的方法,并通过C++代码演示了如何进行色彩空间转换、图像分离与合并的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<_highgui.h>
#include<cv.h>
#include<cxcore.h>
#include<iostream>
int main( int argc , char* argv[])
{
IplImage* src = cvLoadImage ( "F:\\bb1.jpg");
IplImage* src_float = cvCreateImage ( cvGetSize( src) , IPL_DEPTH_32F , 3);


cvConvertScale ( src , src_float , 1 ,0);//将8位的char型转换为32位的float型;


IplImage* img_hsv = cvCreateImage ( cvGetSize( src) , IPL_DEPTH_32F , 3);
IplImage* img_h = cvCreateImage ( cvGetSize( src) , IPL_DEPTH_32F , 1);
IplImage* img_s = cvCreateImage ( cvGetSize( src) , IPL_DEPTH_32F , 1);
IplImage* img_v = cvCreateImage ( cvGetSize( src) , IPL_DEPTH_32F , 1);

cvCvtColor( src_float , img_hsv , CV_BGR2HSV);
cvSplit ( img_hsv , img_h , img_s , img_v , NULL);//将img_hsv分解
IplImage* hsv = cvCreateImage ( cvGetSize( src) , 8 , 3);
IplImage* h = cvCreateImage ( cvGetSize( src) , 8 , 1);
IplImage* s = cvCreateImage ( cvGetSize( src) , 8 , 1);
IplImage* v = cvCreateImage ( cvGetSize( src) , 8 , 1);


//这三幅图像不能用cvSaveImage保存,因为是32位,必须转化为8位的char型;
cvConvertScale ( img_h , h , ( 1.0/360.0)*255.0 , 0 );//img_h的取值范围是360,所以应化为255;
cvConvertScale ( img_s, s , 255, 0 );//img_s的取值范围是0-1,所以应乘以255将范围化为0-255;
cvConvertScale ( img_v , v , 1 , 0 );//img_v的取值范围是0-255,所以应乘以1将范围化为0-255;


cvMerge ( h ,s ,v , NULL , hsv);//将h ,s ,v三幅图像合成一幅

cvNamedWindow ( "src");
cvShowImage ( "src" , src);
cvNamedWindow ( "hsv");
cvShowImage ( "hsv" , hsv);
cvWaitKey(0);
return 0 ;


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值