OpenCV中将BGR图像转为HSV,并显示

        最近要处理视频中检测到的阴影,看了一些文章,提到可以利用HSV 三个通道中的一个或者两个组合来进行检测与分割,故小试了一下分离HSV通道,如下为代码,整了一个小时,才显示正确。      

       HSV颜色空间是描述比RGB更准确的颜色感知颜色联系,并在计算上更简单。从RGB颜色空间转换到HSV颜色空间在OpenCV中是如下实现的: 

        

    其中的RGB图像不管是8位的,还是16位的,首先需要将其统统转换成浮点型的,即其值在0~1之间。因此转换后的VS也属于0~1H属于0~360度。

 

#include "stdafx.h"
#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
#include "cvaux.h"

int _tmain(int argc, _TCHAR* argv[])
{
 IplImage* src = NULL;
 IplImage* floatsrc = NULL;
 IplImage* floathsv = NULL;
 IplImage* floatimgH = NULL;
 IplImage* floatimgS = NULL;
 IplImage* floatimgV = NULL;

 cvNamedWindow( "src", 1 );
    cvNamedWindow( "HSV", 1 );
 cvNamedWindow( "H通道", 1 );
 cvNamedWindow( "S通道", 1 );
 cvNamedWindow( "V通道", 1 );

 src = cvLoadImage( "D:\\lena.jpg", -1);

 CvSize size = cvGetSize( src );
    
 //先将图像转换成float型的
 floatsrc = cvCreateImage( size, IPL_DEPTH_32F, 3 );
 floathsv = cvCreateImage( size, IPL_DEPTH_32F, 3 );
 floatimgH = cvCreateImage( size, IPL_DEPTH_32F, 1 );
 floatimgS = cvCreateImage( size, IPL_DEPTH_32F, 1 );
 floatimgV = cvCreateImage( size, IPL_DEPTH_32F, 1 );

 //将src从8位转换到32位的float型
 cvConvertScale( src, floatsrc, 1.0/255.0, 0 );

 //将float型图像 从BGR转换到HSV  如果需要转换到其他的颜色空间 那么改变CV_BGR2HSV即可
 //cvCvtColor要求两个参数的类型必须完全相同,所以要转为float型
 cvCvtColor( floatsrc, floathsv, CV_BGR2HSV);

 //将三通道图像 分解成3个单通道图像,H对应的通道时0,S、V对应的通道时1和2
 //cvCvtPixToPlane(picHSV, h_plane, s_plane, v_plane, 0);
 cvSplit( floathsv, floatimgH, floatimgS, floatimgV, 0);

 cvShowImage( "src", src );
 cvShowImage( "HSV", floathsv );
 cvShowImage( "H通道", floatimgH );
 cvShowImage( "S通道", floatimgS );
 cvShowImage( "V通道", floatimgV );
 

 cvWaitKey( 0 );

 cvReleaseImage( &src );
 cvReleaseImage( &floathsv );
 cvReleaseImage( &floatimgH );
 cvReleaseImage( &floatimgS );
 cvReleaseImage( &floatimgV );

 return 0;
}


    

 

      

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值