通过minMaxLoc查找最佳匹配值返回值具有特定级别的值的OpenCV

时间:2015-06-29 18:19:41

标签: java opencv javacv

我希望通过阈值水平找到最佳匹配。

这是我所做的,但值保持在0。

cvMatchTemplate(src, tmp, result, CV_TM_CCORR_NORMED);
CvPoint minLoc = new CvPoint();
CvPoint maxLoc = new CvPoint();
DoublePointer min_val = new DoublePointer();
DoublePointer max_val = new DoublePointer();

cvMinMaxLoc(result,min_val, max_val, minLoc, maxLoc, null);

我没有真正得到双指针,但它是mothode所要求的。 min_value和max_value保持为零,所以我无法找到最佳匹配。

感谢advanced.Using javaCV。

1 个答案:

答案 0 :(得分:0)

在示例here中,他们使用了原始双精度,而不是Double类型,他们定义了数组,而不仅仅是对象。那么,为什么不试一试,让我们知道它是否会产生任何影响。

cvMatchTemplate(src, tmp, result, CV_TM_CCORR_NORMED);

double[] min_val = new double[2];
double[] max_val = new double[2];
CvPoint minLoc = new CvPoint();
CvPoint maxLoc = new CvPoint();

cvMinMaxLoc(result, min_val, max_val, minLoc, maxLoc,null);

<强> __ UPDATE __

我从here

找到了以下代码
// Match Template Function from OpenCV
cvMatchTemplate(src, tmp, result, CV_TM_CCORR_NORMED);

// double[] min_val = new double[2];
// double[] max_val = new double[2];
DoublePointer min_val = new DoublePointer();
DoublePointer max_val = new DoublePointer();

CvPoint minLoc = new CvPoint();
CvPoint maxLoc = new CvPoint();

cvMinMaxLoc(result, min_val, max_val, minLoc, maxLoc, null);

注意他们如何实例化DoublePointer()而没有任何参数。如果它没有帮助,我不确定这是什么。我希望它有效。