opencv rgb转matlab,opencv  初学  之  RGB图转化为HSV图

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png 作者:网络害虫 中国海洋大学

一、实验背景

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的处理效果不同。原因:

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值