3

OpenCV4Android APIを使用する Eclipse で Android アプリを作成しています。Matデバッグ専用の画像を簡単に表示するにはどうすればよいですか? C++ では、OpenCV チュートリアルによると、次のようにします。

namedWindow( "Display window", CV_WINDOW_AUTOSIZE );// Create a window for display.
imshow( "Display window", image ); // Show our image inside it.

namedWindowしかし、Android 用の Java API には、内部に機能がないようですorg.opencv.highgui.Highgui

また、画像をグレースケールとしてロードしたいと思います。C++ では、imread not working in Opencvによると、次のようにします。

imread("blackandwhite.jpg", 0);

ただし、Java APIHighgui.imread()にはファイル名引数しかありません。

4

4 に答える 4

7

概要:

イメージをグレースケールに変換します。Imgproc.cvtColor(image, image, Imgproc.COLOR_BGR2GRAY);

表示画像:ここここを参照してください。

于 2012-09-11T02:57:19.057 に答える
3

これは、OpenCV を使用して imageView に画像を表示するサンプル コードです (描画可能なフォルダーに画像が必要です)。

 ImageVIew imgView = (ImageView) findViewById(R.id.sampleImageView);
        Mat mRgba = new MAt();
        mRgba = Utils.loadResource(MainAct.this, R.drawable.your_image,Highgui.CV_LOAD_IMAGE_COLOR);
        Bitmap img = Bitmap.createBitmap(mRgba.cols(), mRgba.rows(),Bitmap.Config.ARGB_8888);
        Utils.matToBitmap(mRgba, img);
        imgView.setImageBitmap(img);

および xml には、以下のように ImageView が必要です。

<ImageView
        android:id="@+id/sampleImageView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"/>

これが問題の解決に役立つことを願っています..

于 2012-09-11T04:22:43.737 に答える
2

しかし、Android 用の Java API には、org.opencv.highgui.Highgui 内に namedWindow 関数がないようです。

に画像を表示する必要があるためですView。WEBからサンプルをご覧ください。

また、画像をグレースケールとしてロードしたいと思います。

このようなタイプの変換のcvCvtColorコードで使用します。CV_BGR2GRAY

于 2012-08-13T19:56:19.623 に答える
0

これは画像の表示を扱っていませんが、ファイルパスで画像を読み取り、グレースケールに変換 (および書き込み) するための簡単な純粋な Java 静的メソッドを次に示します。

/**
 * Get an OpenCV matrix from an image path and write the image as grayscale.
 * @param filePath The image path.
 * @return The matrix.
 */
public static Mat loadOpenCvImage(final String filePath) {
    Mat imgMat = Highgui.imread(filePath, Highgui.CV_LOAD_IMAGE_GRAYSCALE);
    if (imgMat == null) {
        Log.e(TAG, "error loading file: " + filePath);
    } else {
        Log.d(TAG, "Ht: " + imgMat.height() + " Width: " + imgMat.width());
        final String outPath = filePath + "_gray.jpg";
        Log.d(TAG, outPath);
        Highgui.imwrite(outPath, imgMat);
    }
    return imgMat;
}
于 2014-03-31T13:53:07.853 に答える