标签: template-matching

OpenCV模板匹配和透明度

OpenCV在模板匹配期间处理图像透明度的方式是什么?

问题是模板图像需要有透明的部分,因为在原始图像中,这些地方可能有任何东西.

我尝试了所有的方法,但没有一个产生积极的结果(例如原始图像中模板的位置未被正确检测到).

opencv image-processing computer-vision template-matching

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

Android中的OpenCV模板匹配示例

我是OpenCV的初学者.我正在尝试使用OpenCV模板匹配来做一个示例Android应用程序来匹配给定图像中的模板图像.我在互联网上搜索,找不到符合我要求的合适的android或java代码.但我有C++代码.我不知道如何翻译它. http://docs.opencv.org/doc/tutorials/imgproc/histograms/template_matching/template_matching.html

你能帮我找一个合适的java或android代码吗?或者请帮我把这个C++代码翻译成java,我可以在android应用程序中使用它.

先感谢您.

C++代码

#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( argv[1], 1 );
  templ = imread( argv[2], 1 …
Run Code Online (Sandbox Code Playgroud)

c++ java android opencv template-matching

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

尺寸和响应在SURF关键点中的确切代表什么?

我正在使用OpenCV 2.3进行关键点检测和匹配.但我对检测算法给出的参数sizeresponse参数有点困惑.他们究竟是什么意思?

基于OpenCV手册,我无法弄清楚:

float size:有意义的关键点邻域的直径

float response:选择最强关键点的响应.可用于进一步分类或子采样

我认为跟踪的最佳点是响应最快的那个,但似乎并非如此.那么我怎样才能对冲浪探测器返回的关键点进行二次采样,以便在可跟踪性方面保持最佳?

opencv surf feature-detection template-matching video-tracking

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

查找近似重复和伪造的图像

我正在使用感知哈希技术来查找接近重复和完全重复的图像。该代码非常适合查找完全相同的重复图像。然而,找到近似重复和略有修改的图像似乎很困难。由于它们的哈希值之间的差异分数通常类似于完全不同的随机图像的哈希差异。

为了解决这个问题,我尝试将几乎重复的图像的像素化减少到 50x50 像素,并使它们变成黑/白,但我仍然没有我需要的东西(分数差异很小)。

这是几乎重复的图像对的示例:

图片 1 (a1.jpg):

在此输入图像描述

图片 2 (b1.jpg):

在此输入图像描述

这些图像的哈希分数之间的差异是:24

当像素化(50x50 像素)时,它们看起来像这样:

在此输入图像描述

rs_a1.jpg

在此输入图像描述

rs_b1.jpg

像素化图像的哈希差异分数甚至更大!:26

下面是@ann zen 要求的两个近似重复图像对的示例:

对 1

在此输入图像描述

对 2

在此输入图像描述

我用来减小图像大小的代码是这样的:

from PIL import Image    
with Image.open(image_path) as image:
            reduced_image = image.resize((50, 50)).convert('RGB').convert("1")
Run Code Online (Sandbox Code Playgroud)

以及比较两个图像哈希的代码:

from PIL import Image
import imagehash        
with Image.open(image1_path) as img1:
            hashing1 =  imagehash.phash(img1)
with Image.open(image2_path) as img2:
            hashing2 =  imagehash.phash(img2)           
print('difference :  ', hashing1-hashing2)
Run Code Online (Sandbox Code Playgroud)

python opencv image-processing computer-vision template-matching

19
推荐指数
3
解决办法
7975
查看次数

缩放和旋转模板匹配

我正在使用匹配模板的方法CV_TM_CCORR_NORMED来比较两个图像...我想制作这个旋转和缩放不变..任何想法?

我尝试在图像和模板的傅里叶变换上使用相同的方法,但旋转后的结果仍然不同

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

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

处理表的图像以从中获取数据

我有一张桌子的图像(如下所示).我正在尝试从表中获取数据,类似于此表单(表格图像的第一行):

rows[0] = [x,x, , , , ,x, ,x,x, ,x, ,x, , , , ,x, , , ,x,x,x, ,x, ,x, , , , ]
Run Code Online (Sandbox Code Playgroud)

我需要x的数量以及空格的数量.还会有其他表格图像与此图像相似(都具有x和相同的列数).

在此输入图像描述

到目前为止,我能够使用x的图像检测所有x.而且我可以在一定程度上检测到线条 我正在使用open cv2 for python.我也使用houghTransform来检测水平和垂直线(效果非常好).

我试图找出如何逐行进行并将信息存储在列表中.

这些是训练图像:用于检测x(代码中的train1.png) 在此输入图像描述

用于检测行(代码中的train2.png) 在此输入图像描述

用于检测行(代码中的train3.png) 在此输入图像描述

这是我到目前为止的代码:

# process images
from pytesser import *
from PIL import Image
from matplotlib import pyplot as plt
import pytesseract
import numpy as np
import cv2
import math
import os

# the table images
images = ['table1.png', 'table2.png', 'table3.png', 'table4.png', 'table5.png']

# the template images used …
Run Code Online (Sandbox Code Playgroud)

python ocr opencv image template-matching

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

模板匹配的OpenCV性能

我正在尝试基本上在java上进行模板匹配.我用简单的算法找到匹配.这是代码:

minSAD = VALUE_MAX;
// loop through the search image
for ( int x = 0; x <= S_rows - T_rows; x++ ) {
    for ( int y = 0; y <= S_cols - T_cols; y++ ) {
        SAD = 0.0;

        // loop through the template image
        for ( int i = 0; i < T_rows; i++ )
            for ( int j = 0; j < T_cols; j++ ) {

                pixel p_SearchIMG = S[x+i][y+j];

                pixel p_TemplateIMG = T[i][j];

                SAD += …
Run Code Online (Sandbox Code Playgroud)

java templates opencv image template-matching

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

使用FFT进行Matlab模板匹配

我正在Matlab中的傅里叶域中进行模板匹配.这是我的图像(艺术家是DeviantArt上的RamalamaCreatures):

possum.jpg possum_ear.jpg

我的目标是在负鼠的耳朵周围放置一个边界框,就像这个例子(我使用normxcorr2执行模板匹配):

目标:负鼠耳朵受限

这是我正在使用的Matlab代码:

clear all; close all;

template = rgb2gray(imread('possum_ear.jpg'));
background = rgb2gray(imread('possum.jpg'));

%% calculate padding
bx = size(background, 2); 
by = size(background, 1);
tx = size(template, 2); % used for bbox placement
ty = size(template, 1);

%% fft
c = real(ifft2(fft2(background) .* fft2(template, by, bx)));

%% find peak correlation
[max_c, imax]   = max(abs(c(:)));
[ypeak, xpeak] = find(c == max(c(:)));
figure; surf(c), shading flat; % plot correlation 

%% display best match
hFig = figure;
hAx  = axes;
position = [xpeak(1)-tx, …
Run Code Online (Sandbox Code Playgroud)

matlab fft image-processing template-matching cross-correlation

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

在函数调用中,为什么nullptr不匹配指向模板对象的指针?

以下是一个完美运行的代码示例:


#include<iostream>
#include<vector>

template< class D, template< class D, class A > class C, class A = std::allocator< D > >
void foo( C< D, A > *bar, C< D, A > *bas ) {
  std::cout << "Ok!" << std::endl;
}

int main( ) {
  std::vector< int > *sample1 = nullptr;
  std::vector< int > *sample2 = nullptr;
  foo( sample1, sample2 );
  return( 0 );
}
Run Code Online (Sandbox Code Playgroud)

但是,在下面的代码中,编译器无法将std :: vector <int>*与nullptr匹配为第二个参数,甚至能够从第一个参数中扣除模板类型.


#include<iostream>
#include<vector>

template< class D, template< class D, class A > …
Run Code Online (Sandbox Code Playgroud)

c++ function-call nullptr template-matching c++11

9
推荐指数
2
解决办法
5123
查看次数

计算卷积的最快方法

谁知道计算卷积的最快方法?不幸的是,我处理的矩阵非常大(500x500x200),如果我convn在MATLAB中使用它需要很长时间(我必须在嵌套循环中迭代这个计算).所以,我使用FFT进行卷积,现在速度更快.但是,我仍然在寻找一种更快的方法.任何的想法?

c++ matlab signal-processing convolution template-matching

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