我使用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;
}
问题是,在从上一张图像生成模板后调用“重叠功能”时,应用程序崩溃了。
有人可以帮助我吗?
由于
答案 0 :(得分:0)
也许你真的需要先做一些调试,但无论如何,我可以从你的代码中看到,检查图像的大小是值得的 - 似乎你的代码假设模板总是小于输入帧。
如果不是这样,那么你会得到否定的resultWidth
和/或resultHeight
,这会让它崩溃。
另一件事 - 文档建议结果类型应为CV_32FC1
。
PS - 尝试初始化您的结果:
mResult.create(resultHeight, resultWidth, CvType.CV_32FC1);