0

を取得するプロジェクトに取り組んでおり、画像内の平均カウントを計算する必要がありますImages。カメラPreview Imagesから画像をすばやく取得しました ( )。画像形式は(実際には画像形式の専門家ではないので、なぜそれを使用するのかわかりません)CameraBlueAs Preview ImagesNV21

これが私がから画像を読む方法ですCamera Preview Callback

public void onPreviewFrame(byte[] data, Camera camera) {

        Camera.Parameters parameters = camera.getParameters();
        Size size = parameters.getPreviewSize();
        YuvImage image = new YuvImage(data, ImageFormat.NV21, size.width,
                size.height, null);
        Rect rectangle = new Rect();
        rectangle.bottom = size.height;
        rectangle.top = 0;
        rectangle.left = 0;
        rectangle.right = size.width;
        ByteArrayOutputStream out2 = new ByteArrayOutputStream();
        image.compressToJpeg(rectangle, 100, out2);

        byte[] d = out2.toByteArray();
        Bitmap bitmap = BitmapFactory.decodeByteArray(d, 0, d.length);
    }

そして、ご覧のとおり、ピクセルをBitmap読み取って画像の青色を決定し、処理することを計画していましたが、同僚は、その方法は重くて遅く、場合によって は正確ではないと言い、取得する必要があります。ハードウェア自体からのマトリックスとしての画像の青の色で、どこから始めればよいかわかりません(私の同僚は iOS バージョンで動作しています)。BitmapPixel by Pixel

4

1 に答える 1

1

Android に opencv を使用している場合は、簡単なネイティブ コール (JNICALL) でビットマップを jbyte* として関数に渡し、関数で Mat myuv ,mbgra; を使用して BGR に変換できます。cvtColor(myuv, mbgra, CV_YUV420sp2BGR, 4);

次に、マトリックス mbgra を分割します。この後の青いピクセルの検出は、分割されたマトリックスのバイナリマスク操作です。ネイティブであり、各ピクセルをピクセルごとに調べるつもりはないため、高速になる可能性があります。

于 2012-11-07T22:29:00.317 に答える