输入图像:

输出直方图分布图像:

输入图像:

输出直方图分布图像:

#include <cv.h>
#include <highgui.h>
#include <iostream>
using namespace std;int main( int argc, char** argv )
{IplImage * src= cvLoadImage("F:\\test3.jpg");IplImage* hsv = cvCreateImage( cvGetSize(src), 8, 3 );IplImage* h_plane = cvCreateImage( cvGetSize(src), 8, 1 );IplImage* s_plane = cvCreateImage( cvGetSize(src), 8, 1 );IplImage* v_plane = cvCreateImage( cvGetSize(src), 8, 1 );IplImage* planes[] = { h_plane, s_plane };/** H 分量划分为16个等级,S分量划分为8个等级 */int h_bins = 16, s_bins = 8;int hist_size[] = {h_bins, s_bins};/** H 分量的变化范围 */float h_ranges[] = { 0, 180 }; /** S 分量的变化范围*/float s_ranges[] = { 0, 255 };float* ranges[] = { h_ranges, s_ranges };/** 输入图像转换到HSV颜色空间 */cvCvtColor( src, hsv, CV_BGR2HSV );cvCvtPixToPlane( hsv, h_plane, s_plane, v_plane, 0 );/** 创建直方图,二维, 每个维度上均分 */CvHistogram * hist = cvCreateHist( 2, hist_size, CV_HIST_ARRAY, ranges, 1 );/** 根据H,S两个平面数据统计直方图 */cvCalcHist( planes, hist, 0, 0 );/** 获取直方图统计的最大值,用于动态显示直方图 */float max_value;cvGetMinMaxHistValue( hist, 0, &max_value, 0, 0 );/** 设置直方图显示图像 */int height = 240;int width = (h_bins*s_bins*6);IplImage* hist_img = cvCreateImage( cvSize(width,height), 8, 3 );cvZero( hist_img );/** 用来进行HSV到RGB颜色转换的临时单位图像 */IplImage * hsv_color = cvCreateImage(cvSize(1,1),8,3);IplImage * rgb_color = cvCreateImage(cvSize(1,1),8,3);int bin_w = width / (h_bins * s_bins);for(int h = 0; h < h_bins; h++){for(int s = 0; 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);/** 获得当前直方图代表的颜色,转换成RGB用于绘制 */cvSet2D(hsv_color,0,0,cvScalar(h*180.f / h_bins,s*255.f/s_bins,255,0));cvCvtColor(hsv_color,rgb_color,CV_HSV2BGR);CvScalar color = cvGet2D(rgb_color,0,0);cvRectangle( hist_img, cvPoint(i*bin_w,height),cvPoint((i+1)*bin_w,height - intensity),color, -1, 8, 0 );}}cvNamedWindow( "Source", 1 );cvShowImage( "Source", src );cvNamedWindow( "H-S Histogram", 1 );cvShowImage( "H-S Histogram", hist_img );cvWaitKey(0);
}

对于颜色直方图的统计,应该还可以用更多的该进,诸如当S分量小于给定值时,不同H,人眼看上去都是白色,可以将这些颜色的统计归并到白色中去。

[编辑]

作者

  • Pigoneand 猪逻辑公园

出处:http://wiki.opencv.org.cn/index.php/%E5%9B%BE%E5%83%8F%E9%A2%9C%E8%89%B2%E5%88%86%E5%B8%83%E7%9B%B4%E6%96%B9%E5%9B%BE

OpenCV提取图像颜色直方图相关推荐

  1. python图片截取特定部分_如何在Python中使用OpenCV提取图像的特定部分?

    我正在尝试通过执行精明的边缘检测来提取图像的一部分.我已经成功地创建了该对象的掩码.但是,当我对原始图像执行bitwise_and操作以提取前景部分时,会出现以下错误.OpenCV Error: As ...

  2. opencv提取图像中的颜色直方图(RGB、HSV)

    本篇博客主要介绍利用opencv工具提取一幅图像中的颜色直方图特征.所谓颜色直方图,指的是一幅图像中的颜色分布,与图像中的特定的物体无关,只是用来表示人的眼睛观察到的图像中的颜色分布情况,例如说,一幅 ...

  3. 利用OpenCV提取图像中的矩形区域(PPT屏幕等)

    ** 前言 ** 最近参加了大创项目,题目涉及到计算机视觉,学姐发了个修正图像的博客链接,于是打算用这个题目入门OpenCV. 分析问题 照片中的PPT区域总是沿着x,y,z三个轴都有倾斜(如下图), ...

  4. OpenCV提取图像中的垂直线(或者水平线)

    操作过程: 1) 读取原图: 2) 转为灰度图像: 3) 转为二值图像: 4) 定义结构元素: 5) 开操作. void GetLine() {Mat src, grayImg, binImg, de ...

  5. opencv 提取图像线条 霍夫线检测

    # Writer : wojianxinygcl@163.com # Data : 2020.3.21import cv2 as cv import numpy as npimg = cv.imrea ...

  6. python opencv二值化图像_python opencv,读取彩色图像,提取三通道,图像二值化,提取图像的边缘...

    python opencv,读取彩色图像,提取三通道,图像二值化,提取图像的边缘 python opencv 1,读取图像 2,图像变矩阵 3,图像转灰度图像 4,彩色图像是3D数组 5,灰度图像是2 ...

  7. OpenCV python 提取图像内的三色

    OpenCV python 提取图像内的三色 原图 [opencv.jpg] import cv2 import numpy as npdef main():# 1.导入图片img_src = cv2 ...

  8. Opencv学习笔记(二) 提取图像中的水平线和垂直线

    提取图像中的水平线和垂直线属于基础的形态学操作的应用,原理:根据要提取图形来定义一个特定的结构元素,然后以这个结构相素去遍历图像,进行一系列形态学操作,以此过滤掉其他特征的图形,达到提取的效果. 示例 ...

  9. Python,OpenCV提取图片中的多个茄子种子轮廓,并按从左到右排序后显示

    Python,OpenCV提取图片中的多个茄子种子轮廓,并按从左到右排序后显示 1. 效果图 2. 源码 写这篇博客源于博友的提问,期望把下图中的多个茄子种子按从左到右的顺序提取出来: 1. 效果图 ...

最新文章

  1. MyISAM与InnoDB的索引实现
  2. 给 DataGrid 的删除信息添加提示
  3. boost::mp11::mp_same相关用法的测试程序
  4. jQuery插件之ajaxFileUpload(异步上传图片并实时显示,并解决onchange后ajaxFileUpload失效问题)...
  5. SAP Spartacus CmsPage的加载逻辑
  6. mysql 'performance_schema'.'session_variables' 问题处理
  7. 关于HTTPS的几个问题
  8. servlet api.jar是干什么的?
  9. C# 从Object对象中读取属性的值
  10. 站点的安全防范都是后端的职责?非也,Web前端安全同样不可忽视
  11. IDEA开发Springboot时,远程使用企业内部不能连接数据库的解决方法
  12. 聊聊手机之--小米6
  13. Linkflow+表单工具:赋能表单数据,提升表单营销能力
  14. 显示农历天气时钟小部件下载_iOS端当前最火的四款时钟APP小组件评测
  15. python 实现多继承
  16. mysql计算年休假天数_如何计算年假多少天
  17. 微软控诉四大PC品牌经销商
  18. win10 如何在防火墙开放端口
  19. 论文 文献引用字体颜色更改为蓝色
  20. Springboot毕设项目公益众筹管理系统h7sur(java+VUE+Mybatis+Maven+Mysql)

热门文章

  1. Tomcat - 你该知道的Tomcat生产环境部署
  2. Spring Boot2.x-15 整合RabbitMQ 及RabbitMQ的基本使用
  3. 实战SSM_O2O商铺_06logback配置与使用
  4. Spring JDBC-自增键和行集RowSet
  5. vs编译c语言文件不读取对象式宏,C代码的条编译宏windows的VS和linux下gcc编译不一样...
  6. Windows 下安装 Redis
  7. expdp oracle 并行_关于Expdp/Impdp 并行导入导出详细测试结果和并行参数的正确理解!!...
  8. 安卓屏幕适配方案(根据今日头条方案,升级版)
  9. java8 stream遍历_Java8新特性:Stream流详解
  10. Matlab求解混沌系统最大李雅普诺夫指数