2017-01-01 14 views
0

私はAndroidアプリケーションを開発しており、ハリスコーナー検出を使用したいと考えています。検出されたコーナーを描きたいが、Javaコードのドキュメントを見つけることができないようだ。OpenCV Javaハリスコーナー検出

これまでの私のコード:

Mat inputImage = inputFrame.rgba(); 
Imgproc.cornerHarris(inputImage, inputImage, 7, 5, 0.05, Imgproc.BORDER_DEFAULT); 

どのようにコーナーを検出して表示することができますか?

答えて

0

私はこれが理想的ではないと知っていますが、それほど悪くはありません.C++のドキュメントと例を見ると、Javaへの翻訳は通常はまっすぐです。 例:Harris corner detector。 (あなたのバージョンは言及していませんでしたが、これはv2.4のものです)。

1

Javaの場合、このコードを試すことができます。

private void Harris(Mat Scene, Mat Object, int thresh) { 

    // This function implements the Harris Corner detection. The corners at intensity > thresh 
    // are drawn. 
    Mat Harris_scene = new Mat(); 
    Mat Harris_object = new Mat(); 

    Mat harris_scene_norm = new Mat(), harris_object_norm = new Mat(), harris_scene_scaled = new Mat(), harris_object_scaled = new Mat(); 
    int blockSize = 9; 
    int apertureSize = 5; 
    double k = 0.1; 
    Imgproc.cornerHarris(Scene, Harris_scene,blockSize, apertureSize,k); 
    Imgproc.cornerHarris(Object, Harris_object, blockSize,apertureSize,k); 

    Core.normalize(Harris_scene, harris_scene_norm, 0, 255, Core.NORM_MINMAX, CvType.CV_32FC1, new Mat()); 
    Core.normalize(Harris_object, harris_object_norm, 0, 255, Core.NORM_MINMAX, CvType.CV_32FC1, new Mat()); 

    Core.convertScaleAbs(harris_scene_norm, harris_scene_scaled); 
    Core.convertScaleAbs(harris_object_norm, harris_object_scaled); 

    for(int j = 0; j < harris_scene_norm.rows() ; j++){ 
     for(int i = 0; i < harris_scene_norm.cols(); i++){ 
      if ((int) harris_scene_norm.get(j,i)[0] > thresh){ 
       Imgproc.circle(harris_scene_scaled, new Point(i,j), 5 , new Scalar(0), 2 ,8 , 0); 
      } 
     } 
    } 

    for(int j = 0; j < harris_object_norm.rows() ; j++){ 
     for(int i = 0; i < harris_object_norm.cols(); i++){ 
      if ((int) harris_object_norm.get(j,i)[0] > thresh){ 
       Imgproc.circle(harris_object_scaled, new Point(i,j), 5 , new Scalar(0), 2 ,8 , 0); 
      } 
     } 
    } 
} 

私はこの次のコードhere

+0

それはあなたを助けている場合、答えを受け入れるを書きました!これは他の人にも役立ちます! –

+0

私は上記のコードをメソッドの引数としてHarris(mat、mat、1)に渡してみました。画像を確認したところ、コーナーを示す円が表示されていません –

+0

@SivaKReddyCShivaなぜ1を渡しますか? –