2

私はopenCVとJavaCVを使い始めており、画像の形状を検出しようとしています。円を検出したい。私はイメージをビットマップとして持っています(そしてこれだけが好きです)。最初に画像を IplImage として取得し、それをグレースケールに変換してエッジを滑らかにする必要があることを読みました。わかりましたので、私はこのようなことを始めました: 最初に私の画像はビットマップなので、IplImage のオブジェクトを作成します (ボタンを押した後にすべてが起こっていることに言及する必要があります):

IplImage image = new IplImage();

次に、ビットマップを IplImage に変換します。

bitmap.copyPixelsToBuffer(image.getByteBuffer());

ボタンを押した後、最初の行でアプリケーションがクラッシュするため、他のことを考える必要があります。次IplImage image = new IplImage(); のような他のコンストラクターを使用しようとしましIplImage image = new IplImage(size);たが、それも機能しませんでした。どうすればいいのか(IplImageを作成し、ビットマップをIplImageに変換することを意味します)、私はとても感謝しています。

---編集---- もう一度やり直しました。そして今、私は Project->properties->Java Built Path->... を使用して jar を追加していませんが、「lib」フォルダー内に jar を設定しています。しかし、IplImage クラスのオブジェクトを作成しようとすると、すべてがクラッシュします。理由を知っている人はいますか?

--編集--私のlibフォルダーには、android-support-v4.jar、javacpp.jar、javacv.jar、opencvライブラリ-2.4.3.jarがあります。私の活動クラス:

import com.googlecode.javacv.cpp.opencv_core.IplImage;

import android.app.Activity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.Menu;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        IplImage image = new IplImage();

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

アクティビティを開始すると、クラッシュしてログが表示されます。

02-09 12:18:59.207: E/AndroidRuntime(7652): Caused by: java.lang.UnsatisfiedLinkError: Library jniopencv_core not found
02-09 12:18:59.207: E/AndroidRuntime(7652):     at java.lang.Runtime.loadLibrary(Runtime.java:461)
02-09 12:18:59.207: E/AndroidRuntime(7652):     at java.lang.System.loadLibrary(System.java:557)
02-09 12:18:59.207: E/AndroidRuntime(7652):     at com.googlecode.javacpp.Loader.loadLibrary(Loader.java:448)
02-09 12:18:59.207: E/AndroidRuntime(7652):     at com.googlecode.javacpp.Loader.load(Loader.java:372)
02-09 12:18:59.207: E/AndroidRuntime(7652):     at com.googlecode.javacpp.Loader.load(Loader.java:319)
02-09 12:18:59.207: E/AndroidRuntime(7652):     at com.googlecode.javacv.cpp.opencv_core.<clinit>(opencv_core.java:136)
02-09 12:18:59.207: E/AndroidRuntime(7652):     ... 19 more

私が定義しようとした場合、Imgproc img = new Imgproc();すべてが大丈夫だったと言えます。Imgprocを使用して形状(円)を検出できるかもしれませんが、誰かが良いチュートリアルを推奨できますか?

4

1 に答える 1

2

次のようにイメージを直接作成できます。

IplImage image = IplImage.createFrom(bitmapBuffer);

または

IplImage image = IplImage.create(width, height, IPL_DEPTH_8U, 4); // Change the parameter as you need
bitmap.copyPixelsToBuffer(image.getByteBuffer());

LplImageまたは、画像をオブジェクトに直接ロードします

IplImage image = cvLoadImage("image.png");

編集

この質問を参照してください。エラーが解決するはずです。

あなたのエラーに基づいて、libs フォルダーに OpenCV のネイティブ ライブラリ (libjniopencv_core.so など) が含まれていないようです。

インストラクション ガイドに従って、ライブラリとREADME.txtファイルを適切にインストールして使用します。

この質問を参照してください

于 2013-02-08T22:42:31.970 に答える