0

我已经开发了一种使用 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;

}

问题是当从前一张图像生成模板后调用“重叠函数”时,应用程序崩溃了。

有人可以帮我吗?

谢谢

4

1 回答 1

0

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

如果这不是真的,你会得到否定resultWidth和/或resultHeight,这将使它崩溃。

另一件事 - 文档建议结果类型应该是CV_32FC1.

PS - 尝试像这样初始化你的结果:

mResult.create(resultHeight, resultWidth, CvType.CV_32FC1); 
于 2013-04-04T09:38:42.957 回答