OpenCV模板匹配不起作用

时间:2014-02-02 05:02:45

标签: java opencv

我正在尝试使用OpenCV在Java中进行模板匹配。我正在使用BufferedImages(没有选择),将它们转换为Mat,然后调用matchTemplate。然而,结果完全是0 - 显然,这不是我想要的。

这是转换为Mat的代码:

private static Mat toMat(BufferedImage im){
    int w = im.getWidth(), h = im.getHeight();
    BufferedImage bytes = 
        new BufferedImage(w, h, BufferedImage.TYPE_3BYTE_BGR);
    bytes.getGraphics().drawImage(im, 0, 0, null);
    Mat mat = new Mat(h, w, CvType.CV_8UC3);
    mat.put(0, 0, 
        ((DataBufferByte) bytes.getRaster().getDataBuffer()).getData());
    return mat;
}

这是调用matchTemplate的地方:

public Pt_Value matchOne(Mat src, Mat tmpl){
    Mat fltr = new Mat(src.rows() - tmpl.rows() + 1, 
                       src.cols() - tmpl.cols() + 1, CvType.CV_32FC1);
    Imgproc.matchTemplate(src, tmpl, fltr, match_method);
    MinMaxLocResult res = Core.minMaxLoc(fltr);
    if (match_method == Imgproc.TM_SQDIFF_NORMED)
        return new Pt_Value(res.minLoc, 1.0 - res.minVal);
    return new Pt_Value(res.maxLoc, res.maxVal);
}

0 个答案:

没有答案
相关问题