学习OpenCV——绘制彩色直方图(HSV2BGR)
- #include <cv.h>
- #include <highgui.h>
- #include <iostream>
- using namespace std;
- int main( int argc, char** argv )
- {
- IplImage * src= cvLoadImage("D:/2.jpg");
- IplImage* hsv = cvCreateImage( cvGetSize(src), , );
- IplImage* h_plane = cvCreateImage( cvGetSize(src), , );
- IplImage* s_plane = cvCreateImage( cvGetSize(src), , );
- IplImage* v_plane = cvCreateImage( cvGetSize(src), , );
- IplImage* planes[] = { h_plane, s_plane };
- /** H 分量划分为16个等级,S分量划分为8个等级 */
- int h_bins = , s_bins = ;
- int hist_size[] = {h_bins, s_bins};
- /** H 分量的变化范围 */
- float h_ranges[] = { , };
- /** S 分量的变化范围*/
- float s_ranges[] = { , };
- float* ranges[] = { h_ranges, s_ranges };
- /** 输入图像转换到HSV颜色空间 */
- cvCvtColor( src, hsv, CV_BGR2HSV );
- cvCvtPixToPlane( hsv, h_plane, s_plane, v_plane, );
- /** 创建直方图,二维, 每个维度上均分 */
- CvHistogram * hist = cvCreateHist( , hist_size, CV_HIST_ARRAY, ranges, );
- /** 根据H,S两个平面数据统计直方图 */
- cvCalcHist( planes, hist, , );
- /** 获取直方图统计的最大值,用于动态显示直方图 */
- float max_value;
- cvGetMinMaxHistValue( hist, , &max_value, , );
- /** 设置直方图显示图像 */
- int height = ;
- int width = (h_bins*s_bins*);
- IplImage* hist_img = cvCreateImage( cvSize(width,height), , );
- cvZero( hist_img );
- /** 用来进行HSV到RGB颜色转换的临时单位图像 */
- IplImage * hsv_color = cvCreateImage(cvSize(,),,);
- IplImage * rgb_color = cvCreateImage(cvSize(,),,);
- int bin_w = width / (h_bins * s_bins);
- for(int h = ; h < h_bins; h++)
- {
- for(int s = ; s < s_bins; s++)
- {
- int i = h*s_bins + s;
- /** 获得直方图中的统计次数,计算显示在图像中的高度 */
- float bin_val = cvQueryHistValue_2D( hist, h, s );
- int intensity = cvRound(bin_val*height/max_value);//Round, Floor, Ceil 转换浮点数为整数(cvRound 返回和参数最接近的整数值。 cvFloor 返回不大于参数的最大整数值。cvCeil 返回不小于参数的最小整数值。)
- /** 获得当前直方图代表的颜色,转换成RGB用于绘制 */
- cvSet2D(hsv_color,,,cvScalar(h*.f / h_bins,s*.f/s_bins,,));
- cvCvtColor(hsv_color,rgb_color,CV_HSV2BGR);
- CvScalar color = cvGet2D(rgb_color,,);
- cvRectangle( hist_img, cvPoint(i*bin_w,height),
- cvPoint((i+)*bin_w,height - intensity),
- color, -, , );
- }
- }
- cvNamedWindow( "Source", );
- cvShowImage( "Source", src );
- cvNamedWindow( "H-S Histogram", );
- cvShowImage( "H-S Histogram", hist_img );
- cvWaitKey();
- }
from: http://blog.csdn.net/yangtrees/article/details/7433598
学习OpenCV——绘制彩色直方图(HSV2BGR)的更多相关文章
- OpenCV 绘制图像直方图
OpenCV绘制图像直方图,版本2.4.11 直方图可展示图像中的像素分布,是用以表示数字图像中亮度分布的直方图,标绘了图像中每个亮度值的像素数.可以借助观察该直方图了解需要如何调整亮度分布.这种直方 ...
- opencv绘制灰度直方图
代码之一: #include <cv.h> #include <highgui.h> #pragma comment( lib, "cv.lib" ) #p ...
- OpenCV分通道显示图片,灰度,融合,直方图,彩色直方图
代码有参考跟整合:没有一一列出出处 // split_rgb.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <io ...
- 深度学习 + OpenCV,Python实现实时视频目标检测
使用 OpenCV 和 Python 对实时视频流进行深度学习目标检测是非常简单的,我们只需要组合一些合适的代码,接入实时视频,随后加入原有的目标检测功能. 在本文中我们将学习如何扩展原有的目标检测项 ...
- 怎么样用opencv将彩色图片转化成像素值只有0和255的灰度图?
分类: OpenCV [Q1]怎么样用opencv将彩色图片转化成像素值只有0和255的灰度图? 进行灰度化,IplImage* pImg = cvLoadImage( "C:\\1.b ...
- 《学习OpenCV》练习题第四章第三题b
#include <highgui.h> #include <cv.h> #include "opencv_libs.h" /* *<学习OpenCV ...
- 学习opencv中文版教程——第二章
学习opencv中文版教程——第二章 所有案例,跑起来~~~然而并没有都跑起来...我只把我能跑的都尽量跑了,毕竟看书还是很生硬,能运行能出结果,才比较好. 越着急,心越慌,越是着急,越要慢,越是陌生 ...
- 学习OpenCV——SVM
学习OpenCV——SVM 学习SVM,首先通过http://zh.wikipedia.org/wiki/SVM, 再通过博客http://blog.csdn.net/yang_xian521/art ...
- 【从零学习openCV】IOS7人脸识别实战
前言 接着上篇<IOS7下的人脸检測>,我们顺藤摸瓜的学习怎样在IOS7下用openCV的进行人脸识别,实际上非常easy,因为人脸检測部分已经完毕,剩下的无非调用openCV的方法对採集 ...
随机推荐
- lua日期与时间操作
os.date("%Y%m%d%H%M%S", os.time()) <== 20160405141211 yyyyMMddHHmmss os.time() ...
- Java生成动态GIF图片
写selenium自动化时,为了查看运行效果,后给浏览器截图,想到可以生成gif图片来快速预览.看到已经有人实现了,直接拿过来. 共涉及到三个java文件,分别是NeuQuant.java,LZWEn ...
- About-PHP-02
如果要给table里面的td添加颜色,有两种方法: <html> <head> <meta http-equiv="Content-Type" con ...
- HTML第二节课
表单 <form id="" name="" method="post/get" action=""> &l ...
- Thinkphp框架感悟(二)
这次主要分析一下I方法 /** * 获取输入参数 支持过滤和默认值 * 使用方法: * <code> * I('id',0); 获取id参数 自动判断get或者post * I('post ...
- vs2013打开 2010项目时: 请确认 <Import> 声明中的路径正确,且磁盘上存在该文件
错误原因:原来2010项目中使用的路径是 v11.0,但是我的 C:\Program Files (x86)\MSBuild\12.0\ 是 12.0,所以该成 12.0 解决办法:将项目文件(.cs ...
- (转)MySQL优化实例
在Apache, PHP,MySQL的体系架构中,MySQL对于性能的影响最大,也是关键的核心部分.对于Discuz!论坛程序也是如此,MySQL的设置是否合理优化,直接影响到论坛的速度和承载量!同时 ...
- 为什么会出现Python Exception <class 'gdb.MemoryError'> Cannot access memory at address 问题?
问题描述: 把列表listview写入notebook里. 在main函数中, win = create_and_set_a_window(); book = gtk_notebook_ ...
- jQuery判断元素是否存在方法总结
在jquery中判断元素是否存在我们可使用$("#div").length > 0)来判断了,意思就是判断元素长度了,如果没有肯定是不存在的哦,下面我来介绍介绍. 使用传统j ...
- readyState0 1 2 3 4..
0:请求未初始化(还没有调用 open()). 1:请求已经建立,但是还没有发送(还没有调用 send()). 2:请求已发送,正在处理中(通常现在可以从响应中获取内容头). 3:请求在处理中:通常响 ...