关闭

图像搜索

321人阅读 评论(0) 收藏 举报
分类:

opencv教程中的代码

/*

对1280*1280的图片配对32*32的模板,耗时在300ms左右
该方法对32*32的图像应与1280*1280的一部分完全相同,该配对才会准确
*/


#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <stdio.h>


using namespace std;
using namespace cv;


/// Global Variables
Mat img; Mat templ; Mat result;
char* image_window = "Source Image";
char* result_window = "Result window";


int match_method;
int max_Trackbar = 5;


/// Function Headers
void MatchingMethod(int, void*);


/** @function main */
int main(int argc, char** argv)
{
/// Load image and template
img = imread("1.jpg", 1);//1为大图片
templ = imread("2.jpg", 1);//2为小图片


/// Create windows
namedWindow(image_window, CV_WINDOW_AUTOSIZE);
namedWindow(result_window, CV_WINDOW_AUTOSIZE);


/// Create Trackbar
char* trackbar_label = "Method: \n 0: SQDIFF \n 1: SQDIFF NORMED \n 2: TM CCORR \n 3: TM CCORR NORMED \n 4: TM COEFF \n 5: TM COEFF NORMED";
createTrackbar(trackbar_label, image_window, &match_method, max_Trackbar, MatchingMethod);


MatchingMethod(0, 0);


waitKey(0);
return 0;
}


/**
* @function MatchingMethod
* @brief Trackbar callback
*/
void MatchingMethod(int, void*)
{
double tick = (double)getTickCount();
/// Source image to display
Mat img_display;
img.copyTo(img_display);


/// Create the result matrix
int result_cols = img.cols - templ.cols + 1;
int result_rows = img.rows - templ.rows + 1;


result.create(result_rows, result_cols, CV_32FC1);


/// Do the Matching and Normalize
matchTemplate(img, templ, result, match_method);
normalize(result, result, 0, 1, NORM_MINMAX, -1, Mat());


/// Localizing the best match with minMaxLoc
double minVal; double maxVal; Point minLoc; Point maxLoc;
Point matchLoc;


minMaxLoc(result, &minVal, &maxVal, &minLoc, &maxLoc, Mat());


/// For SQDIFF and SQDIFF_NORMED, the best matches are lower values. For all the other methods, the higher the better
if (match_method == CV_TM_SQDIFF || match_method == CV_TM_SQDIFF_NORMED)
{
matchLoc = minLoc;
}
else
{
matchLoc = maxLoc;
}


/// Show me what you got
rectangle(img_display, matchLoc, Point(matchLoc.x + templ.cols, matchLoc.y + templ.rows), Scalar::all(0), 2, 8, 0);
rectangle(result, matchLoc, Point(matchLoc.x + templ.cols, matchLoc.y + templ.rows), Scalar::all(0), 2, 8, 0);


imshow(image_window, img_display);
imshow(result_window, result);
cout << "Recv: " << 1000 * ((double)getTickCount() - tick) / getTickFrequency() << endl;
return;

}


图片效果:


0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

图像识别和图像搜索

多媒体识别是信息检索中难度较高且需求日益旺盛的一个问题。以图像为例,按照图像检索中使用的信息区分,图像可以分为两类:基于文本的图像检索和基于内容识别的图像检索。基于文本的图像检索完全不分析和利用图像本...
  • lalala729
  • lalala729
  • 2015-04-01 11:05
  • 483

相似图像搜索

1. 起因前段时间面试刷经验的时候,和面试官聊到一个相似图像检索的问题,由于以前做过一个很小的demo,所以就 bulalala 的介绍了一番。某天中午吃饭的时候,第二次听到有人在探讨一个以图搜图的问...
  • llcchh012
  • llcchh012
  • 2015-05-03 16:00
  • 1977

人工智能——图搜索

目录 目录 1 人工智能——图搜索 2 一.数据驱动和目标驱动搜索 2 二.盲目搜索 2 1.回溯搜索 2 2.宽度优先搜索 2 3.深度优先搜索 3 4. 等代价搜索 4 5. 与...
  • beiger
  • beiger
  • 2014-10-31 21:47
  • 1058

相似图片搜索的原理(matlab)

根据Neal Krawetz博士的解释,原理非常简单易懂。我们可以用一个快速算法,就达到基本的效果。 这里的关键技术叫做"感知哈希算法"(Perceptual hash algorithm),它的作...
  • u013322443
  • u013322443
  • 2014-06-07 15:02
  • 1981

图像搜索算法

对于这种图像搜索的算法,一般是三个步骤: 1. 将目标图片进行特征提取,描述图像的算法很多,用的比较多的是:SIFT描述子,指纹算法函数,bundling features算法,hash  fu...
  • tian_110
  • tian_110
  • 2015-05-08 09:25
  • 1461

如何快速搭建一个简单图像搜索引擎

这里只是图像搜索入门级的note,要更好的架设一个完整的图像搜索引擎,可以参考:图像处理,图像识别(计算机视觉),机器学习领域中的论文。 图像特征     图像常用的特征大概包括了:颜色特征、纹理特...
  • u010165147
  • u010165147
  • 2017-03-03 13:38
  • 677

图像搜索引擎 - 特征篇

在简介篇中我们简单说过图像特征,图像特征的提取有两种常用方式,一是提取例如SIFT特征,手工进行特征的筛选等,需要计算机视觉方面的先验性知识;二是使用当前很火的深度学习,训练出基于卷积神经网络模型的特...
  • u010599509
  • u010599509
  • 2016-06-29 11:08
  • 697

图像相似性搜索的原理

本文转自: http://www.hackerfactor.com/blog/index.php?/archives/432-Looks-Like-It.html http://www.ruan...
  • jiandanjinxin
  • jiandanjinxin
  • 2016-04-29 15:18
  • 3480

利用Python实现简单的相似图片搜索的教程

大概五年前吧,我那时还在为一家约会网站做开发工作。他们是早期创业公司,但他们也开始拥有了一些稳定用户量。不像其他约会网站,这家公司向来以洁身自好为主要市场形象。它不是一个供你鬼混的网站——是让你能找到...
  • GarfieldEr007
  • GarfieldEr007
  • 2016-05-12 19:02
  • 3172

OpenCV基于直方图特征的图像搜索

转自:http://blog.csdn.net/jia20003/article/details/7771651#comments图像处理之相似图片识别(直方图应用篇)算法概述:首先对源图像与要筛选的...
  • Augusdi
  • Augusdi
  • 2013-05-02 15:49
  • 4000
    个人资料
    • 访问:89577次
    • 积分:1318
    • 等级:
    • 排名:千里之外
    • 原创:29篇
    • 转载:74篇
    • 译文:0篇
    • 评论:12条
    文章分类
    最新评论