OpenCV——反向投影(定位模板图像在输入图像中的位置)
反向投影:
#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——反向投影(定位模板图像在输入图像中的位置)的更多相关文章
- opencv——图像直方图与反向投影
引言 在图像处理中,对于直方图这个概念,肯定不会陌生.但是其原理真的可以信手拈来吗? 本文篇幅有点长,在此列个目录,大家可以跳着看: 分析图像直方图的概念,以及opencv函数calcHist()对于 ...
- OpenCV---直方图反向投影
一:直方图反向投影的方法 二:二维直方图的表示 (一)直接显示 def hist2D_demo(image): hsv = cv.cvtColor(image,cv.COLOR_BGR2HSV) hi ...
- 14、OpenCV实现图像的空间滤波——图像锐化及边缘检测
1.图像锐化理论基础 1.锐化的概念 图像锐化的目的是使模糊的图像变得清晰起来,主要用于增强图像的灰度跳变部分,这一点与图像平滑对灰度跳变的抑制正好相反.而且从算子可以看出来,平滑是基于对图像领域的加 ...
- OpenCV常用基本处理函数(7)图像金字塔和直方图
高斯金字塔 高斯金字塔的顶部是通过将底部图像中的连续的行和列去除得到的.顶部图像中的每个像素值等于下一层图像中 5 个像素的高斯加权平均值. 这样操作一次一个 MxN 的图像就变成了一个 M/2xN/ ...
- OpenCV 学习笔记(模板匹配)
OpenCV 学习笔记(模板匹配) 模板匹配是在一幅图像中寻找一个特定目标的方法之一.这种方法的原理非常简单,遍历图像中的每一个可能的位置,比较各处与模板是否"相似",当相似度足够 ...
- 反向投影(BackProjection)
如果一幅图像的区域中显示的是一种结构纹理或者一个独特的物体,那么这个区域的直方图可以看作一个概率函数,他给的是某个像素属于该纹理或物体的概率. 所谓反向投影就是首先计算某一特征的直方图模型,然后使用模 ...
- OpenCV2马拉松第10圈——直方图反向投影(back project)
收入囊中 灰度图像的反向投影 彩色图像的反向投影 利用反向投影做object detect 葵花宝典 什么是反向投影?事实上没有那么高大上! 在上一篇博文学到,图像能够获得自己的灰度直方图. 反向投影 ...
- OpenCV计算机视觉学习(11)——图像空间几何变换(图像缩放,图像旋转,图像翻转,图像平移,仿射变换,镜像变换)
如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 图像 ...
- [zt]OpenCV如何获取视频当前的一帧图像
(OpenCV读取视频.OpenCV提取视频每一帧.每一帧图片合成新的AVI视频)CvCapture 是视频获取结构 被用来作为视频获取函数的一个参数 比如 CvCapture* cap; IplIm ...
随机推荐
- Map集合框架的练习
Map是一个很重要的集合框架,它以键值对的方式存储,下面是一个Map集合的小练习,使用了keySet的取出方法. 取出字符串的每一个字符,记录每一个字母出现的次数.使用Map集合框架. package ...
- 【17】迭代器模式(Iterator Pattern)
一.引言 在上篇博文中分享了我对命令模式的理解,命令模式主要是把行为进行抽象成命令,使得请求者的行为和接受者的行为形成低耦合.在这一章中,将介绍一下迭代器模式. 二.迭代器模式的介绍 迭代器是针对集合 ...
- Linux常用基本命令(more)
more命令 作用:相比cat一次性显示文件内容,more用于分页显示内容,less比more更强大,大多数的参数类似 more [option] [file] -num : 每页显示num行 +nu ...
- linux下使用sublime-text写coffee遇到的编译问题
Traceback (most recent call last): File "/opt/sublime_text/sublime_plugin.py", line 556, i ...
- js之面向对象
本文的面向对象分为ES6和ES6之前的,重点学习ES6的===============================一.面向对象 1.什么是面向对象 a)什么是对象:万物都可以抽象成对象 时间对象 ...
- 纯小白入手 vue3.0 CLI - 2.2 - 组件 home.vue 的初步改造
vue3.0 CLI 真小白一步一步入手全教程系列:https://www.cnblogs.com/ndos/category/1295752.html 我的 github 地址 - vue3.0St ...
- OSGI企业应用开发(四)使用Blueprint整合Spring框架(一)
上篇文章中介绍了如何使用独立的Equinox发行包搭建OSGI运行环境,而不是依赖与具体的Eclipse基础开发工具,本文开始介绍如何使用Blueprint將Spring框架整合到OSGI中. 一.开 ...
- 关于Dynamics CRM 安装用户权限的说明
做了这么多年的CRM项目,但发现部分客户的IT安全监管很严格,在CRM系统安装时,要求给出系统安排账号的权限. 这时小伙伴们 坚持不住了~~ 天天都是用域控的admin操作,这个时候问我要什么权限,于 ...
- Flink1.4.0连接Kafka0.10.2时遇到的问题
Flink1.4.0连接部署在Linux上的Kafka0.10.2时,报如下异常: org.apache.flink.streaming.connectors.kafka.FlinkKafkaCons ...
- IDEA报错:Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled. ('crmWatcherService'错误)
单表插入项目,插入前正常,插入后运行webapplication报错: run: debug: 于webapplication报错: Injection of autowired dependenci ...