OpenCV中将BGR图像转为HSV,并显示
来源:互联网 发布:中传女被害案 知乎 编辑:程序博客网 时间:2024/06/03 16:22
最近要处理视频中检测到的阴影,看了一些文章,提到可以利用HSV 三个通道中的一个或者两个组合来进行检测与分割,故小试了一下分离HSV通道,如下为代码,整了一个小时,才显示正确。
HSV颜色空间是描述比RGB更准确的颜色感知颜色联系,并在计算上更简单。从RGB颜色空间转换到HSV颜色空间在OpenCV中是如下实现的:
其中的RGB图像不管是8位的,还是16位的,首先需要将其统统转换成浮点型的,即其值在0~1之间。因此转换后的V和S也属于0~1,H属于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;}
- OpenCV中将BGR图像转为HSV,并显示
- OpenCV中将BGR图像转为HSV,并显示
- opencv 将BGR转为HSV
- 将BGR图像转换成HSV颜色空间的转换
- opencv——实现BGR到HSV颜色空间转换
- Opencv中将CvMat转为IplImage
- Python OpenCV显示图像并保存图像
- OpenCV中读取RGB格式图像转成HSV格式图像显示
- OpenCV中读取RGB格式图像转成HSV格式图像显示
- OpenCV中读取RGB格式图像转成HSV格式图像显示
- OpenCV中读取RGB格式图像转成HSV格式图像显示
- QT显示OPENCV的图像(IplImage 转为QImage)
- cvCvtColor(image,hsv,CV_BGR2HSV); BGR2HSV( bgr, hsv);
- 【OpenCV】车牌定位RGB转HSV图像并打印输出各像素点的值
- 利用OpenCV鼠标事件设置函数setMouseCallback显示图像像素的RGB、HSV和坐标值!
- OpenCV:绘制图像的BGR三通道直方图
- 利用OpenCV读入,显示并保存图像
- opencv 实现加载并显示图像
- win7 jdk1.7环境变量配置
- 4月11日 GCD 总结(二)
- C++ TCP Server
- HDU 1010 Tempter of the Bone 深度优先搜索(DFS)
- [bxd学习java基本点]13泛型类,泛型方法,当定义二种类型的泛型方法时,用迭代器的方法
- OpenCV中将BGR图像转为HSV,并显示
- linux常用命令——重定向
- 全面解析Ext模板XTemplate(转)
- C++ TCP Client
- GDB的基本用法
- [bx]和loop指令
- HDU 1079 Calendar Game 博弈
- ubuntu 下修改root密码
- C语言之Main函数返回值问题分析