2

Androidで画像をキャプチャしてopencvで処理する最良の方法は何ですか? ここでサーフェスビューを使用する必要がありますか、それともopencvサンプルのようにopencvカメラを使用する必要がありますか? キャプチャした画像を読み込んで Mat に変換するにはどうすればよいですか? 前もって感謝します

 private PictureCallback mPicture = new PictureCallback() {

        @Override
    public void onPictureTaken(byte[] data, Camera camera) {

        File pictureFile = getOutputMediaFile(MEDIA_TYPE_IMAGE);
        if (pictureFile == null) {
            Log.d("E",
                    "Error creating media file, check storage permissions ");
            return;
        }

        try {

            FileOutputStream fos = new FileOutputStream(pictureFile);
            fos.write(data);
            fos.close();
            //processImage();
        } catch (FileNotFoundException e) {
            Log.d("E", "File not found: " + e.getMessage());
        } catch (IOException e) {
            Log.d("E", "Error accessing file: " + e.getMessage());
        }
    }
4

1 に答える 1

8

OpenCV サンプルには、カメラ プレビューの結果をキャプチャ、処理、および表示するのに役立つ CameraBridgeViewBase があります (低解像度イメージの連続ストリーム)。

単一のキャプチャをより高い解像度で処理したい場合は、onPictureTaken() に似たものを使用する必要があります。次に、Highgui.imread()を使用して画像を読み取り、処理できます。

BitmapFactory.decodeByteArray() を使用してデータ配列から Bitmap を作成し、 Utils.bitmapToMat()使用して Bitmap を Mat に変換することで、ファイルへの書き込みと読み取りを回避することもできます。

于 2013-10-07T21:12:25.473 に答える