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れ、クラッシュします。

もう1つ-ドキュメントでは、結果の型はCV_32FC1.

PS - 次のように結果を初期化してみてください。

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