标签: matchtemplate

emgu在图像中查找图像b

我是emgu的新手,想要从哪里开始.

我已经看过形状检测,但它太复杂了我需要的东西..我想..而且我的例子不起作用.我收到此错误:

在EMGU.CV中无法获得SURF示例吗?

无论如何,这就是我想要做的:在图像B中找到图像A.图像A是一个简单的正方形,总是具有相同的灰色1像素边框并且总是相同的尺寸(我相信)但内部颜色可能是黑色或大约7种其他颜色之一(只有纯色).当我按下按钮时,我需要在图像b中找到图像A的坐标.见下图.

B

图像b

图片A

图像

c# surf emgucv matchtemplate

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

使用opencv matchtemplate进行泡罩包装检查

我正在做一个项目,我必须检查药物泡罩包装是否缺少药片.

我正在尝试使用opencv的matchTemplate函数.让我展示代码,然后是一些结果.

int match(string filename, string templatename)
{
    Mat ref = cv::imread(filename + ".jpg");
    Mat tpl = cv::imread(templatename + ".jpg");
    if (ref.empty() || tpl.empty())
    {
        cout << "Error reading file(s)!" << endl;
        return -1;
    }

    imshow("file", ref);
    imshow("template", tpl);

    Mat res_32f(ref.rows - tpl.rows + 1, ref.cols - tpl.cols + 1, CV_32FC1);
    matchTemplate(ref, tpl, res_32f, CV_TM_CCOEFF_NORMED);

    Mat res;
    res_32f.convertTo(res, CV_8U, 255.0);
    imshow("result", res);

    int size = ((tpl.cols + tpl.rows) / 4) * 2 + 1; //force size to be odd
    adaptiveThreshold(res, …
Run Code Online (Sandbox Code Playgroud)

opencv inspection matchtemplate

10
推荐指数
1
解决办法
6761
查看次数

解释openCV匹配模板的交叉关联和规范化

对于matchTemplate()的CV_TM_CCORR_NORMED方法,我的老板和我不同意这是怎么回事; 在openCV中.

你能解释一下这里发生了什么,特别是这个等式的平方根方面.

opencv normalization cross-correlation matchtemplate

7
推荐指数
1
解决办法
5990
查看次数

python opencv cv2 matchTemplate具有透明度

OpenCV 3.0.0增加了在执行templateMatch时指定掩码的功能.当我指定一个掩码时,我收到此错误:error: (-215) (depth == CV_8U || depth == CV_32F) && type == _templ.type() && _img.dims() <= 2 in function matchTemplateMask

模板图像(带透明度的PNG):

在此输入图像描述

来源图片:

在此输入图像描述

# read the template emoji with the alpha channel
template = cv2.imread(imagePath, cv2.IMREAD_UNCHANGED)
channels = cv2.split(template)
zero_channel = np.zeros_like(channels[0])
mask = np.array(channels[3])

# all elements in alpha_channel that have value 0 are set to 1 in the mask matrix
mask[channels[3] == 0] = 1

# all elements in alpha_channel that have value 100 are set …
Run Code Online (Sandbox Code Playgroud)

python opencv matchtemplate opencv3.0

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

如何解释matchtemplate输出?(openCV,Python)

在阅读了文档并在互联网上搜索之后,我仍然不明白如何从openCV解释matchTemplate函数的输出.

我的理解:

result = cv2.matchTemplate(img, template, cv2.TM_CCOEFF_NORMED)
Run Code Online (Sandbox Code Playgroud)

据我所知,我得到了一个矩阵,它具有图片中每个部分的匹配值.此矩阵中的每个元素确定它与模板显示的相似程度.

例如,我可以过滤所有匹配值低于0.7的位置

numpy.where(result >= 0.7)

我不明白的是这些信息是如何存储在我从matchTemplate函数得到的输出中的,以及如何从输出中提取匹配的位置.

基本上我想做的是将几个模板匹配到一个图像,然后确定哪个模板最适合哪个位置(具有一个位置的所有应用模板的最大匹配值).

我的想法是将匹配值提取到每个模板的矩阵中,然后将矩阵(它们的元素)相互比较以找到最佳匹配.

谢谢你的帮助,请在我错的地方纠正我,

问候唐

python opencv matchtemplate output

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

opencv matchtemplate源码中使用什么方法处理彩色图像?

opencv matchtemplate 的文档

对于彩色图像,分子中的模板求和和分母中的每个总和是在所有通道上完成的,并且每个通道使用单独的平均值。也就是说,该函数可以采用颜色模板和彩色图像。结果仍然是单通道图像,更容易分析。

我不明白这意味着什么。对于彩色模板和彩色图像,单通道图像(结果)是所有通道结果的平均值吗?

templmatch.cpp源代码:github

python opencv image colors matchtemplate

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

OpenCV GPU(CUDA)模板匹配和FFT实现

我在GTX690上使用opencv GPU :: matchTemplate().

我在内部检查了函数,发现gpu :: matchTemplate()在这个过程中没有使用任何FFT,而它的CPU对应物却没有.

我的问题是,在GPU中不使用FFT的原因是什么?

opencv cuda gpu fft matchtemplate

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

Opencv matchTemplate不匹配

我正在使用OpenCV 3.0.0将图像定位到另一个图像.先验函数matchTemplate是我需要使用的,但看到结果我不再确定了.

问题在于,根据输入图像,结果非常准确或完全不准确.

例1:

主图像

简单

模板

简单

结果

简单

这里没有抱怨.在这种情况下匹配是完美的.但现在我替换我想要使用的图像和...

主图像

复杂

模板

复杂

结果

在此输入图像描述

所以,根本不工作(图像右上角的结果矩形).任何方法(在此示例中为CORR NORMED)都会打印模板所在的矩形.所有结果都远非准确.

所以,我的问题是,matchTemplate的结果是否取决于主图像有多少种不同的颜色/形状?SURF或SIFT会帮助我吗?你们现在有什么功能可以帮助我将模板定位到另一个图像中吗?

先感谢您!

PS:我没有添加任何代码,因为我猜这不是那种问题,因为第一个例子效果很好.

opencv matching matchtemplate

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

JavaCV 从资源创建 Mat (InputStream)

我使用 JavaCV(不是 OpenCV)。Mat我的目标是从存储为资源的图像中获取对象。然后我将把它传递Matopencv_imgproc.matchTemplate方法。我设法编写了这个糟糕的代码:

    InputStream in = getClass().getResourceAsStream("Lenna32.png");
    BufferedImage image = ImageIO.read(in);
    Frame f = new Java2DFrameConverter().getFrame(image);
    Mat mat = new OpenCVFrameConverter.ToMat().convert(f);
Run Code Online (Sandbox Code Playgroud)

这在某些情况下有效。问题是:

  1. 对于具有透明通道(即 32BPP)的 png 图像,它会移动通道,从而R=00 G=33 B=66 A=FF变成R=33 G=66 B=FF Lenna 32BPP 色移

  2. 在我的目标环境中,我无法使用ImageIO

  3. 对象转换太多InputStream -> BufferedImage -> Frame -> Mat。我觉得应该有一个简单而有效的方法来做到这一点。

从资源创建 Mat 的最佳方法是什么?

java image-processing javacv matchtemplate

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

OpenCV 无法将模板与图像匹配(matchTemplate)

所以我有一个图像

图片

和一个模板

模板

我想在图像中找到模板图像,但我的代码没有找到任何东西。我尝试缩小尺寸但仍然没有检测到。请帮我举个例子:

import cv2
import imutils
import glob, os
import numpy as np

image = cv2.imread("mainimage.png")
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
h, w = gray.shape[:2]
for file in glob.glob("template.png"):
    template = cv2.imread(file)
    template = cv2.cvtColor(template, cv2.COLOR_BGR2GRAY)
    found = None
    (tH, tW) = template.shape[:2]
    cv2.imshow("Template", template)

    for scale in np.linspace(1, 0.2, 20)[::-1]:
        resized = imutils.resize(gray, width=int(gray.shape[1] * scale))
        r = gray.shape[1] / float(resized.shape[1])

        if resized.shape[0] < tH or resized.shape[1] < tW:
            break
        edged = cv2.Canny(resized, 50, 200)
        result = cv2.matchTemplate(edged, template, …
Run Code Online (Sandbox Code Playgroud)

opencv computer-vision python-3.x matchtemplate

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

matchTemplate opencv无法正常工作,如opencv文档所示

我正在努力解决这个问题,因为在我从相机拍摄的图像中,我需要找到一些模式的存在和位置.

为此,我发现使用matchTemplateopencv的方法.我使用了opencv样本中使用的图像并编写了代码但结果却不同.

http://opencv.itseez.com/doc/tutorials/imgproc/histograms/template_matching/template_matching.html

这是告诉我们matchTemplate的链接.

当我实现它时,它显示了结果: -

在此输入图像描述

我的代码如下: -

-(void)matchPatchNet
{
    IplImage    *res;
    CvPoint     minloc, maxloc;
    double      minval, maxval;
    int         img_width, img_height;
    int         tpl_width, tpl_height;
    int         res_width, res_height;


    NSString *pathPatron = [[NSBundle mainBundle] pathForResource:@"timage" ofType:@"jpg"];

    UIImage *tim = [UIImage imageWithContentsOfFile:pathPatron];
    NSString *pathPatron2 = [[NSBundle mainBundle] pathForResource:@"simage" ofType:@"jpg"];

    UIImage *tim2 = [UIImage imageWithContentsOfFile:pathPatron2];

    IplImage *img = [self CreateIplImageFromUIImage:tim2];//

    IplImage *tpl = [self CreateIplImageFromUIImage:tim];
    cv::Mat forground1 = [tim2 CVMat];

    cv::Mat forground2 = [tim CVMat];
    img_width  = img->width;
    img_height = img->height;
    tpl_width …
Run Code Online (Sandbox Code Playgroud)

c iphone opencv objective-c matchtemplate

0
推荐指数
1
解决办法
2266
查看次数