反向投影:

 #include <opencv2/opencv.hpp>
#include <iostream> using namespace cv;
using namespace std;
#define WINDOW_NAME "效果图" Mat src, hsv, hue;
Mat temp, temp_hsv, temp_hue;
int bin = ;//直方图组距
void on_BinChange(int, void*); int main(int argc, char** argv)
{
src = imread("test.jpg");
temp = imread("temp.jpg");
if (src.empty()|| temp.empty()) {
printf("Could not load image...");
return -;
}
imshow("Input Image",src); //转到HSV空间
cvtColor(src, hsv, COLOR_BGR2HSV);
cvtColor(temp, temp_hsv, COLOR_BGR2HSV); //分离Hue色调通道
hue.create(hsv.size(),hsv.depth());
temp_hue.create(temp_hsv.size(), temp_hsv.depth());
int ch[]= {,};
mixChannels(&hsv, , &hue, , ch, );
mixChannels(&temp_hsv, , &temp_hue, , ch, ); //创建Trackbar来输入bin的数目
namedWindow(WINDOW_NAME,WINDOW_AUTOSIZE);
createTrackbar("色调组距", WINDOW_NAME,&bin,, on_BinChange); //进行一次初始化
on_BinChange(, ); imshow(WINDOW_NAME, src); waitKey();
return ;
} void on_BinChange(int, void*)
{
//参数准备
MatND hist;
int histSize = max(bin, );
float hue_range[] = { , };//h通道的取值范围
const float* ranges = {hue_range}; //计算直方图并归一化
//calcHist(&hue, 1, 0, Mat(), hist, 1, &histSize, &ranges, true, false);
//normalize(hist,hist,0,255,NORM_MINMAX,-1,Mat());
calcHist(&temp_hue, , , Mat(), hist, , &histSize, &ranges, true, false);
normalize(hist, hist, , , NORM_MINMAX, -, Mat()); //计算反向投影
MatND backproj;
calcBackProject(&hue,,,hist,backproj,&ranges,,true); imshow("反向投影图", backproj); //绘制直方图参数准备
int w = , h = ;
int bin_w = cvRound((double)w/histSize);
Mat histImg = Mat::zeros(w,h,CV_8UC3); //绘制直方图
for(int i=;i<bin;i++)
{
rectangle(histImg, Point(i*bin_w,h),Point((i+)*bin_w,h-cvRound(hist.at<float>(i)*h/255.0)),Scalar(,,),-);
} imshow("直方图",histImg); }

直方图反向投影可以在“输入图像”中 找到和“模板”直方图特征相似的部分。

OpenCV——反向投影(定位模板图像在输入图像中的位置)的更多相关文章

  1. opencv——图像直方图与反向投影

    引言 在图像处理中,对于直方图这个概念,肯定不会陌生.但是其原理真的可以信手拈来吗? 本文篇幅有点长,在此列个目录,大家可以跳着看: 分析图像直方图的概念,以及opencv函数calcHist()对于 ...

  2. OpenCV---直方图反向投影

    一:直方图反向投影的方法 二:二维直方图的表示 (一)直接显示 def hist2D_demo(image): hsv = cv.cvtColor(image,cv.COLOR_BGR2HSV) hi ...

  3. 14、OpenCV实现图像的空间滤波——图像锐化及边缘检测

    1.图像锐化理论基础 1.锐化的概念 图像锐化的目的是使模糊的图像变得清晰起来,主要用于增强图像的灰度跳变部分,这一点与图像平滑对灰度跳变的抑制正好相反.而且从算子可以看出来,平滑是基于对图像领域的加 ...

  4. OpenCV常用基本处理函数(7)图像金字塔和直方图

    高斯金字塔 高斯金字塔的顶部是通过将底部图像中的连续的行和列去除得到的.顶部图像中的每个像素值等于下一层图像中 5 个像素的高斯加权平均值. 这样操作一次一个 MxN 的图像就变成了一个 M/2xN/ ...

  5. OpenCV 学习笔记(模板匹配)

    OpenCV 学习笔记(模板匹配) 模板匹配是在一幅图像中寻找一个特定目标的方法之一.这种方法的原理非常简单,遍历图像中的每一个可能的位置,比较各处与模板是否"相似",当相似度足够 ...

  6. 反向投影(BackProjection)

    如果一幅图像的区域中显示的是一种结构纹理或者一个独特的物体,那么这个区域的直方图可以看作一个概率函数,他给的是某个像素属于该纹理或物体的概率. 所谓反向投影就是首先计算某一特征的直方图模型,然后使用模 ...

  7. OpenCV2马拉松第10圈——直方图反向投影(back project)

    收入囊中 灰度图像的反向投影 彩色图像的反向投影 利用反向投影做object detect 葵花宝典 什么是反向投影?事实上没有那么高大上! 在上一篇博文学到,图像能够获得自己的灰度直方图. 反向投影 ...

  8. OpenCV计算机视觉学习(11)——图像空间几何变换(图像缩放,图像旋转,图像翻转,图像平移,仿射变换,镜像变换)

    如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 图像 ...

  9. [zt]OpenCV如何获取视频当前的一帧图像

    (OpenCV读取视频.OpenCV提取视频每一帧.每一帧图片合成新的AVI视频)CvCapture 是视频获取结构 被用来作为视频获取函数的一个参数 比如 CvCapture* cap; IplIm ...

随机推荐

  1. jqgrid 获取当前页数据

    /** *刷新,jqGrid刷新当前列表页代码 */ function refresh(url) { var page = $('#your_grid').getGridParam('page'); ...

  2. HDU4417(SummerTrainingDay08-N 主席树)

    Super Mario Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  3. HDU1069(KB12-C)

    Monkey and Banana Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  4. JavaScrip 概述 -- 前端知识

    JavaScript概述 ECMAScript和JavaScript的关系 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript提交给国际标准化组织ECM ...

  5. 葡萄城报表V11 SP2新版本震撼发布!

    葡萄城报表正式发布 v11.2 版本,强势推出国内首创的基于HTML5的在线报表设计器,从此报表设计告别桌面应用程序,随时随地修改报表,真正跨平台操作,从而使任何报表用户更快速的响应报表业务变化! 在 ...

  6. 企业如何选择合适的BI工具?

    在没认清现状前,企业当然不能一言不合就上BI. BI不同于一般的企业管理软件,不能简单归类为类似用于提高管理的ERP和WMS,或用于提高企业效率的OA.BPM.BI的本质应该是通过展现数据,用于加强企 ...

  7. C语言目录

    软件行业的很多细分学科都是都是基于C语言的,学习数据结构.算法.操作系统.编译原理等都离不开C语言. PHP.Python 等都是用C语言开发出来的,虽然平时做项目的时候看不到C语言的影子,但是如果想 ...

  8. idea 关联 jdk

    1.打开IntelliJ IDEA 2.选择 "File" 菜单 3.找到 "other settings" 4.选择 “Structure for new P ...

  9. Expo大作战(二十)--expo中的Release channels(不重要*)

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  10. 正则捕获url的?号传值

    http://www.baidu.com/Q?k=0012719021908563998510650 有时候,我们需要在静态页面捕获?号传值,这时就需要用到js的正则表达式. 例如:我们要获取上面这个 ...