加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

opencv  初学  之  RGB图转化为HSV图

(2012-03-13 20:05:23)
标签:

opencv

rgb

hsv

matlab

it

分类: 图像处理--opencv

http://www/uc/myshow/blog/misc/gif/E___7485ZH00SIGG.gif 初学  之  RGB图转化为HSV图" TITLE="opencv  初学  之  RGB图转化为HSV图" />                                                           作者:网络害虫  中国海洋大学

一、实验背景

 VC++2008与opencv2.3联合编程。

 由于实验需要使用opencv,将RGB图转化为HSV图进行图片处理;同时,也由于是初学opencv,所以对很多语句不是很了解。所以,在搜索了网上大量资料后,进行了学习,同时产生了一下问题。

二、实验的问题及解决

我原本是用matlab实验,后来由于matlab的处理速度太慢,故需要在vc中用opencv重新编写。所以,我将opencv生成的图片和matlab生成的图片进行了对比。

 

不理想方法:(来自百度百科)

  IplImage *dst_image = cvCreateImage(cvGetSize(src),32,src->nChannels);

  IplImage *src_image_32 = cvCreateImage(cvGetSize(src),32,src->nChannels);

  cvConvertScale(src,src_image_32,1.0/255.0,0);//将原图RGB归一化到0-1之间

  cvCvtColor(src_image_32,dst_image,CV_BGR2HSV);//得到HSV图

将原图由8个字节转化为32个字节;先做归一化,再转化图片。

再将得到的图片分离到H,S,V三个单通道上观察,差别巨大;效果十分的不理想。

 

理想方法:

cvCvtColor(src,dst_image,CV_BGR2HSV);//得到HSV图

直接使用,不要归一;将图片分离到H,S,V三个单通道上观察,发现和matlab的处理效果一致。但是,HSV图本身和matlab的处理效果不同。原因:http://www/uc/myshow/blog/misc/gif/E___6708EN00SIGG.gif 初学  之  RGB图转化为HSV图" TITLE="opencv  初学  之  RGB图转化为HSV图" />

matlab中是按R,G, B三通道显示:

opencv中是按B, G, R三通道显示。

 

 

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有