标签: template-matching

如何在从ORIGINAL-IMAGE中提取的SUB-IMAGE中执行模板匹配过程并在原始图像中显示结果

整整一天我已经尝试了很多东西来获得子图像中的所有相关匹配(使用matchtemplate函数),这是我已经使用mousecallback函数从原始图像中提取的ROI.所以我的代码在下面是匹配功能

 ////Matching Function
void CTemplate_MatchDlg::OnBnTemplatematch()
 {

  namedWindow("reference",CV_WINDOW_AUTOSIZE);    
   while(true)
   { 

 Mat ref = imread("img.jpg");                    //  Original Image   
 mod_ref = cvCreateMat(ref.rows,ref.cols,CV_32F);// resizing the image to fit in picture box
 resize(ref,mod_ref,Size(),0.5,0.5,CV_INTER_AREA);

   Mat tpl =imread("Template.jpg"); // TEMPLATE IMAGE  

  cvSetMouseCallback("reference",find_mouseHandler,0);

  Mat aim=roiImg1.clone(); // SUB_IMAGE FROM ORIGINALIMAGE                   
                               // aim variable contains the ROI matrix
                               // next, want to perform template matching in that ROI                                                //                                     and display results on original image 


     if(select_flag1 == 1)
    {

        // imshow("ref",aim);

        Mat res(aim.rows-tpl.rows+1, aim.cols-tpl.cols+1,CV_32FC1);
                    matchTemplate(aim, tpl, res, CV_TM_CCOEFF_NORMED);
        threshold(res, res, …
Run Code Online (Sandbox Code Playgroud)

c c++ opencv image-processing template-matching

5
推荐指数
1
解决办法
2735
查看次数

图像匹配,仿射变形

我的问题在这里显示:问题陈述.我有一个模板图像,我必须在相机图像中检测.在检测到之后,我必须通过使用仿射变换来标准化相机图像.我的工作目标是识别十字架.我尝试使用SURF功能进行图像归一化步骤,但模板图像非常规则,不适合SURF匹配.有什么想法可以做到这一点?也许某种轮廓匹配?

opencv image-processing pattern-matching computer-vision template-matching

4
推荐指数
1
解决办法
2912
查看次数

在android中替换手势库模板

是否可以从正在运行的应用程序中替换模板库的手势模板?我正在建立一个手写识别系统,其中手势库文件中有字母模板.所以基本上在代码中加载库后我比较用户输入手势,如:

public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture) {
ArrayList<Prediction> predictions = gesturelib.recognize(gesture);

   if (predictions.size() > 1) {
    for(Prediction prediction: predictions){
       //i compare prediction name here and if matches print it in an edittext
    }
Run Code Online (Sandbox Code Playgroud)

这应该工作得很好,直到用户给出与我在构建库模板期间所做的相同的模式.但是我想让用户在预测不匹配时灵活地用他的手写模式替换模板项.

因为下面2个手写的手势样本在模式方面有所不同,而不是作为一个字母.假设,我的系统支持第一个图像模式,我想当用户给出第二个图像模式时系统会要求用户确认将其替换为A的库模式然后在确认之后将其替换.所以下次系统将更好地识别用户模式.

任何帮助将不胜感激.

在此输入图像描述 在此输入图像描述

android gesture-recognition gestures template-matching

4
推荐指数
1
解决办法
1033
查看次数

模板与OpenCV中的容差匹配

我正在使用OpenCV和C++.我想检查图像是否是另一个图像的一部分,并且已经找到了一个matchTemplate正在工作的函数.但是如果模板图像有点不同呢?有没有一个函数或类似方法matchTemplate检查模板是否是源图像的一部分,但是具有公差参数,如位置,角度,大小甚至可能变形?或者我需要一个完全不同的方法而不是模板匹配?

这是我到目前为止的代码,它在源图像中找到模板图像,但没有(或几乎没有)容差.

#include <opencv2\core\core.hpp>
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\imgproc\imgproc.hpp>
#include <opencv2\highgui\highgui.hpp>
#include <iostream>
#include <stdio.h>

using namespace cv;
using namespace std;

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

int match_method;
int max_Trackbar = 5;

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

/**
* @function main
*/
int main( int, char** argv )
{
  /// …
Run Code Online (Sandbox Code Playgroud)

c++ opencv image-processing computer-vision template-matching

4
推荐指数
1
解决办法
4025
查看次数

不同方法的 OpenCV matchTemplate 阈值

我搜索了很多以找到下面提到的方法的阈值。

methods = ['cv2.TM_CCOEFF', 'cv2.TM_CCOEFF_NORMED', 'cv2.TM_CCORR',
            'cv2.TM_CCORR_NORMED', 'cv2.TM_SQDIFF', cv2.TM_SQDIFF_NORMED']
Run Code Online (Sandbox Code Playgroud)

我也试图自己弄清楚它们,但我只能找到最大值为 1.0 的 3 种方法的阈值。其他方法的值在 10^5 的范围内。我想知道这些方法的界限。

有人可以指出我正确的方向。我的议程是遍历模板匹配的所有方法并获得最佳结果。我浏览了文档和源代码,但没有运气。

这些是我得到的值,我可以理解 *NORMED 方法的值是 0-1。

cv2.TM_CCOEFF -- 25349100.0
cv2.TM_CCOEFF_NORMED -- 0.31208357214927673
cv2.TM_CCORR -- 616707328.0
cv2.TM_CCORR_NORMED -- 0.9031367897987366
cv2.TM_SQDIFF -- 405656000.0
cv2.TM_SQDIFF_NORMED -- 0.737377941608429
Run Code Online (Sandbox Code Playgroud)

opencv image image-processing template-matching opencv3.0

4
推荐指数
1
解决办法
2742
查看次数

OpenCV Python中与多个对象的模板匹配

根据此链接,我正在尝试使用 opencv python 在图像中查找多个模板。

但问题是,单个对象返回的多个点在位置上略有不同。像这样的东西:

在此处输入图片说明

我不想使用,cv2.minMaxLoc()因为图像中有多个模板。我写了一个删除平仓的函数,但我想知道这个问题有什么简单的解决方案吗?谢谢。

python opencv image-processing computer-vision template-matching

4
推荐指数
1
解决办法
4901
查看次数

EmguCV中的对象跟踪

我正在构建一个跟踪未知对象的对象跟踪程序.用户必须在实时视频流中选择应跟踪的区域.我的项目与此视频类似.

http://www.youtube.com/watch?v=G5GLIKIkd6E

我尝试了一种方法,但它不够健壮,跟踪器移动了很多.所以我再次从头开始.

任何人都知道如何在视频中提出一个方法?我是emgucv的新手,截至目前我真的不知道从哪里开始.

c# opencv emgucv template-matching

3
推荐指数
1
解决办法
2万
查看次数

如何在 OpenCV 中找出匹配的好坏?

我怎样才能得到一个绝对值,告诉我模板在它最匹配的地方匹配了多少?我知道 minMaxLoc() ,但这只能告诉我最大的值是多少,但我不知道 MAXIMUM 值是多少,因此我可以了解它的匹配程度。

我见过有人说你可以使用归一化得到一个百分比,但这并没有真正帮助我,因为最大的值总是 100%。我错过了什么吗?

java opencv template-matching

3
推荐指数
1
解决办法
3769
查看次数

多个模板匹配仅检测到一个匹配项

我正在尝试匹配这张图片

在此输入图像描述

在这张图片中

在此输入图像描述

然而,我找不到超过一个的头目敌人。我需要做什么才能找到其他人?

图片加载

struct XYposition{
  float X;
  float Y;
};

std::vector<cv::Mat> bossList;
std::string bossStrings[1] = { "sprites\\boss\\bossUp.png" };
for (int i = 0; i < 1; i++){
    cv::Mat pic = cv::imread(bossStrings[i], CV_LOAD_IMAGE_GRAYSCALE);
    bossList.push_back(pic);
}

multipleTemplateMatch(screenImage, bossList);
Run Code Online (Sandbox Code Playgroud)

模板匹配

std::vector<XYposition> multipleTemplateMatch(cv::Mat &img, std::vector<cv::Mat> tplList){

std::vector<XYposition> matches;

cv::Mat convertImg(img.rows, img.cols, CV_8UC3);
cv::cvtColor(img, convertImg, CV_BGRA2GRAY);

double threshold = 0.8;

int imgint = convertImg.type();

for(cv::Mat tpl : tplList){
    int tplint = tpl.type();
    cv::Mat result(convertImg.rows - tpl.rows + 1, convertImg.cols - tpl.cols + 1,
        CV_32FC1); …
Run Code Online (Sandbox Code Playgroud)

c++ opencv image-processing template-matching

3
推荐指数
1
解决办法
3026
查看次数

本项目未使用 Gradle 构建系统警告将 Boofcv 导入 Android Studio

所以,最后我已经将 BoofCV 安装到 Android Studio(本网站上的 Tx 到 Q&A)并且所有示例都通过打开弹出窗口(包括模板匹配和网络摄像头捕获)完美运行:

截屏

但是事件日志中的消息[说],“将项目迁移到 Gradle?该项目不使用 Gradle 构建系统。我们建议您迁移到使用 Gradle 构建系统。那么,我应该怎么做!?

我想通过网络摄像头创建模板匹配的应用程序。是否可以忽略上述警告消息来创建我的应用程序。!?

提前致谢。

template-matching android-studio android-gradle-plugin boofcv

3
推荐指数
1
解决办法
1408
查看次数