OpenCV提取图像颜色直方图
输入图像:
输出直方图分布图像:
输入图像:
输出直方图分布图像:
#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提取图像颜色直方图相关推荐
- python图片截取特定部分_如何在Python中使用OpenCV提取图像的特定部分?
我正在尝试通过执行精明的边缘检测来提取图像的一部分.我已经成功地创建了该对象的掩码.但是,当我对原始图像执行bitwise_and操作以提取前景部分时,会出现以下错误.OpenCV Error: As ...
- opencv提取图像中的颜色直方图(RGB、HSV)
本篇博客主要介绍利用opencv工具提取一幅图像中的颜色直方图特征.所谓颜色直方图,指的是一幅图像中的颜色分布,与图像中的特定的物体无关,只是用来表示人的眼睛观察到的图像中的颜色分布情况,例如说,一幅 ...
- 利用OpenCV提取图像中的矩形区域(PPT屏幕等)
** 前言 ** 最近参加了大创项目,题目涉及到计算机视觉,学姐发了个修正图像的博客链接,于是打算用这个题目入门OpenCV. 分析问题 照片中的PPT区域总是沿着x,y,z三个轴都有倾斜(如下图), ...
- OpenCV提取图像中的垂直线(或者水平线)
操作过程: 1) 读取原图: 2) 转为灰度图像: 3) 转为二值图像: 4) 定义结构元素: 5) 开操作. void GetLine() {Mat src, grayImg, binImg, de ...
- opencv 提取图像线条 霍夫线检测
# Writer : wojianxinygcl@163.com # Data : 2020.3.21import cv2 as cv import numpy as npimg = cv.imrea ...
- python opencv二值化图像_python opencv,读取彩色图像,提取三通道,图像二值化,提取图像的边缘...
python opencv,读取彩色图像,提取三通道,图像二值化,提取图像的边缘 python opencv 1,读取图像 2,图像变矩阵 3,图像转灰度图像 4,彩色图像是3D数组 5,灰度图像是2 ...
- OpenCV python 提取图像内的三色
OpenCV python 提取图像内的三色 原图 [opencv.jpg] import cv2 import numpy as npdef main():# 1.导入图片img_src = cv2 ...
- Opencv学习笔记(二) 提取图像中的水平线和垂直线
提取图像中的水平线和垂直线属于基础的形态学操作的应用,原理:根据要提取图形来定义一个特定的结构元素,然后以这个结构相素去遍历图像,进行一系列形态学操作,以此过滤掉其他特征的图形,达到提取的效果. 示例 ...
- Python,OpenCV提取图片中的多个茄子种子轮廓,并按从左到右排序后显示
Python,OpenCV提取图片中的多个茄子种子轮廓,并按从左到右排序后显示 1. 效果图 2. 源码 写这篇博客源于博友的提问,期望把下图中的多个茄子种子按从左到右的顺序提取出来: 1. 效果图 ...
最新文章
- MyISAM与InnoDB的索引实现
- 给 DataGrid 的删除信息添加提示
- boost::mp11::mp_same相关用法的测试程序
- jQuery插件之ajaxFileUpload(异步上传图片并实时显示,并解决onchange后ajaxFileUpload失效问题)...
- SAP Spartacus CmsPage的加载逻辑
- mysql 'performance_schema'.'session_variables' 问题处理
- 关于HTTPS的几个问题
- servlet api.jar是干什么的?
- C# 从Object对象中读取属性的值
- 站点的安全防范都是后端的职责?非也,Web前端安全同样不可忽视
- IDEA开发Springboot时,远程使用企业内部不能连接数据库的解决方法
- 聊聊手机之--小米6
- Linkflow+表单工具:赋能表单数据,提升表单营销能力
- 显示农历天气时钟小部件下载_iOS端当前最火的四款时钟APP小组件评测
- python 实现多继承
- mysql计算年休假天数_如何计算年假多少天
- 微软控诉四大PC品牌经销商
- win10 如何在防火墙开放端口
- 论文 文献引用字体颜色更改为蓝色
- Springboot毕设项目公益众筹管理系统h7sur(java+VUE+Mybatis+Maven+Mysql)
热门文章
- Tomcat - 你该知道的Tomcat生产环境部署
- Spring Boot2.x-15 整合RabbitMQ 及RabbitMQ的基本使用
- 实战SSM_O2O商铺_06logback配置与使用
- Spring JDBC-自增键和行集RowSet
- vs编译c语言文件不读取对象式宏,C代码的条编译宏windows的VS和linux下gcc编译不一样...
- Windows 下安装 Redis
- expdp oracle 并行_关于Expdp/Impdp 并行导入导出详细测试结果和并行参数的正确理解!!...
- 安卓屏幕适配方案(根据今日头条方案,升级版)
- java8 stream遍历_Java8新特性:Stream流详解
- Matlab求解混沌系统最大李雅普诺夫指数