android-opencv应用程序的模板匹配

时间:2013-04-04 08:52:23

标签: android opencv image-processing

我使用OpenCV为android开发了一个算法。我需要找到前一个图像和当前帧之间的重叠。所以,我已经从之前的图像中生成了模板以匹配当前帧以制作照片。这是完成拍摄的程序。 (拍摄超过10张照片)

以下是我为找到重叠而开发的代码。

public void overlapFinder(Mat inputFrame , Mat inputTemplate )

{

Mat mResult; 

  int resultWidth =  inputFrame.width() - inputTemplate.width() + 1; 

  int resultHeight = inputFrame.height() - inputTemplate.height() + 1;

  mResult = new Mat(resultHeight, resultWidth, CvType.CV_8U); 

  Imgproc.matchTemplate(inputFrame, inputTemplate, mResult,Imgproc.TM_CCORR_NORMED) ; 
  Core.MinMaxLocResult result = Core.minMaxLoc(mResult);

  @SuppressWarnings("unused")

  double maxVal = result.maxVal;

}

问题是,在从上一张图像生成模板后调用“重叠功能”时,应用程序崩溃了。

有人可以帮助我吗?

由于

1 个答案:

答案 0 :(得分:0)

也许你真的需要先做一些调试,但无论如何,我可以从你的代码中看到,检查图像的大小是值得的 - 似乎你的代码假设模板总是小于输入帧。

如果不是这样,那么你会得到否定的resultWidth和/或resultHeight,这会让它崩溃。

另一件事 - 文档建议结果类型应为CV_32FC1

PS - 尝试初始化您的结果:

mResult.create(resultHeight, resultWidth, CvType.CV_32FC1);