在F盘生成了一个文件名称为“文件夹”的文本文件。

第一步:批处理提取图像的一维颜色直方图,并保存到.xml中的featureHists

第一个參数:图像的路径

第二个參数:保存的.xml

#include<iostream>
#include<fstream>
#include<string>
using namespace std;#include<opencv2\imgproc\imgproc.hpp>
#include<opencv2\core\core.hpp>
#include<opencv2\highgui\highgui.hpp>
using namespace cv;//计算一维直方图特征
Mat hist1d(const Mat& src);int main(int argc,char* argv[])
{if(argc !=3){cerr << "Wrong Argument !" <<endl;return -1;}//定义文件流,仅仅能读取ifstream inPutFile(argv[1],ios::in);if(! inPutFile){cerr << "File Open Erro !" <<endl;return -1;}//读取文件流中的每一行,并赋值给fileName。读取每一幅图像并显示string fileName ;Mat image;Mat featureHist;Mat featureHists;while (getline(inPutFile,fileName)){image = imread(fileName,1);//计算一维直方图特征featureHist = hist1d(image);//按行存储每一幅图像的一维直方图特征featureHists.push_back(featureHist);}//注意一定要记得关闭文件流inPutFile.close();/*第五步。把图像特征保存到.xml文件里*/FileStorage fs(argv[2],FileStorage::WRITE);fs<<"featureHists"<<featureHists;fs.release();return 0;
}Mat hist1d(const Mat& src)
{Mat hsv;//颜色空间的转换 BGR2HSVcvtColor(src,hsv,CV_BGR2HSV);//把H通道分为60个binint hbins = 60;int histSize[] = { hbins };//H的取值范围 0-179float hranges[]= {0,180};const float* ranges [] ={hranges};Mat hist1D,histRow,histRowDst;//我们依据图像的第一通道。计算一维直方图,并且输出的hist1D为32Fint channels [] ={0};calcHist(&hsv,1,channels,Mat(),hist1D,1,histSize,ranges,true,false);//把直方图特征按一行来存储histRow=hist1D.reshape(1,1);//把直方图归一化normalize(histRow,histRowDst,1,0,NORM_L1);return histRowDst;
}

编译完毕后,进入命令行

然后,在F盘出现了一个features的.xml文件。里边存储了上述图像一维直方图特征。

—————————————————————————————————————————————————————————————————————————————
第二步:提取色卡的一维颜色直方图

#include<iostream>
#include<string>
using namespace std;#include<opencv2\core\core.hpp>
#include<opencv2\highgui\highgui.hpp>
#include<opencv2\imgproc\imgproc.hpp>
using namespace cv;int main(int argc,char* argv[])
{Mat src = imread(argv[1],1);if(! src.data){cout <<"No Image" << endl;return -1;}Mat hsv;//颜色空间的转换BGR2HSVcvtColor(src,hsv,CV_BGR2HSV);//把H通道分为60个binint hbins = 60;int histSize[] = { hbins };//H的取值范围 0-179float hranges[]= {0,180};const float* ranges [] ={hranges};Mat hist1D,histRow,histRowDst;//我们依据图像的第一通道,计算一维直方图,并且输出的hist1D为32Fint channels [] ={0};calcHist(&hsv,1,channels,Mat(),hist1D,1,histSize,ranges,true,false);//把直方图特征按一行来存储histRow=hist1D.reshape(1,1);//把直方图归一化normalize(histRow,histRowDst,1,0,NORM_L1);FileStorage fs(argv[2],FileStorage::WRITE);//把histRowDst保存到.xml文件里fs << argv[3] << histRowDst;fs.release();return 0;
}

分别各自提取他们的一维颜色直方图

然后,在F盘出现了四个.xml文件,分别存放了他们的颜色直方图信息

____________________________________________________________________________________________________________________________________

第三步:利用颜色卡的颜色直方图检索图像的颜色直方图

图像检索:一维直方图+欧几里得距离+flann+KNN相关推荐

  1. Opencv一维直方图的绘制

    下面是我参考<opencv3编程入门>写的绘制一维直方图的代码 using namespace cv; using namespace std; #define byte uchar #d ...

  2. 2022-11-16 每日打卡:单调栈解决最大矩形问题(一维直方图,二维最大红矩形)

    每日打卡:单调栈解决最大矩形问题(一维直方图,二维最大红矩形) 柱状图中最大的矩形 思路 这个题最明显的思路就是:矩形面积=底×高. 版本1:底的长度可以通过二重循环来完成,高通过循环来寻找最小值. ...

  3. 【ROOT from CERN】——TH1绘制一维直方图

    本篇文章具体介绍如何绘制出一张最简单的具备齐全要素的一维直方图,以及其各个要素最基本的绘制和修改方法. 一.创建直方图 1.直方图主体 (1)利用构造函数构造一维直方图 构建固定bin宽的直方图如下示 ...

  4. python二维数据读取对齐_从投影的二维直方图绘制对齐的x,y一维直方图

    我需要生成一个类似于this example中所示的图像: 不同之处在于,我用numpy的histogram2d生成了一个二维直方图,并用imshow和gridspec绘制了二维直方图: 如何将二维直 ...

  5. ROOT学习——一维直方图的条形图示例(hbars.C)

    条形图在日常统计数据时时常会用到,ROOT官方教程中给出了一个示例来讲述如何使用ROOT绘制条形图,绘制效果如下: 下面给出具体步骤: 首先打开tutorials / tree目录中的cernstaf ...

  6. 在灰度图像上进行Mean Shift迭代搜索目标 ,一维加权直方图 + 巴氏系数 + Mean Shift迭代

    今天要给大家分享的是: 在灰度图像上进行Mean Shift迭代搜索目标 一维加权直方图+巴氏系数+Mean Shift迭代 关于 加权直方图.巴氏系数.Mean Shift迭代 这三者之间的关系请大 ...

  7. 【opencv】直方图-3:二维直方图(一维灰度强度,二维色相饱和度,)

    4_10_3_直方图3:二维直方图 - OpenCV中文官方文档 学习查找和绘制2D直方图. 前情提要 一维直方图仅考虑一个特征,即像素的灰度强度值. 二维直方图要考虑两个特征. 通常,它用于查找颜色 ...

  8. 【学习OpenCV4】什么是图像的直方图?如何获取直方图?

    图像的直方图 一.什么是图像直方图 二.如何计算图像直方图 三.二维直方图 一.什么是图像直方图   图像直方图是图像像素值的统计学特征.计算代价较小,具有图像平移.旋转.缩放不变性等众多优点,广泛地 ...

  9. 《OpenCV3编程入门》学习笔记9 直方图与匹配(一二) 图像直方图概述直方图的计算与绘制

    第9章 直方图与匹配 9.1 图像直方图(Histogram)概述 1.作用:   在每个兴趣点设置一个有相近特征的直方图所构成的标签,通过标记帧与帧之间显著的边缘.颜色.角度等特征的统计变化,来检测 ...

最新文章

  1. sublime_text3代码自动提示补全
  2. Web安全学习week6
  3. 一维OTSU法、最小交叉熵法、二维OTSU法及C++源码
  4. php-fpm 超时,PHP超时的坑
  5. 模线性方程(中国剩余定理+扩展中国剩余定理)
  6. Nacos: Namespace 和 Endpoint 在生产环境下的最佳实践
  7. ruby mysql 驱动_windows下Rails安装MySql驱动的配置
  8. LeetCode167 | Two Sum II - Input array is sorted (Easy)
  9. 遇到一个日志文件变化带来的文件句柄问题
  10. struts2 result随笔
  11. HTML的段落与注释元素
  12. 记录一次:微信支付申请时,网站不通过/统一驳回的问题解决方法
  13. 计算机网络中特有符号,计算机基础知识测试题-一肖中特免费公开资料.doc
  14. u深度重装系统详细教程_U深度U盘安装原版win7系统的图文教程
  15. 带本科生做毕设是什么样的体验,看看学生是怎么评价我的
  16. spring aop记录操作日志和错误日志
  17. linux阿里云服务器centos8操作系统安装mysql8.0详细教程
  18. ONLYOFFICE历史版本功能的开发技术之一
  19. 每天坚持收小钱,能改命!
  20. YOLOv3 论文精读

热门文章

  1. websphere linux版本,安装IBM Websphere on linux
  2. 最新有道翻译接口JS逆向分析
  3. python和什么语言类似_python与其他语言的对比
  4. 12月25日服务器例行维护公告,12月25日维护公告 技能修改测试
  5. flowable工作流 流程变量_信也科技工作流平台的技术实践
  6. css 一些好玩的属性,推荐一些比较有用的css3新属性
  7. #6282. 数列分块入门 6
  8. JDK8新特性(二)之接口新增的两个方法
  9. Python报错can only concatenate str (not “int“) to str
  10. kettle的变量空间接口VariableSpace实现与委托模式