1

Android 用の openCV SDK に付属する「color-blob-detection」という名前のサンプル プロジェクトを使用して、特定の色の領域を識別することができます。私が必要としているのは、その領域を抽出し、ビットマップとして携帯電話のメモリに保存することです。

これは私がこれまでに理解したことです:

輪郭のリストがあります:

List<MatOfPoint> contours = new ArrayList<MatOfPoint>();

輪郭は以下を使用して検出されます。

Imgproc.findContours(mDilatedMask, contours, mHierarchy, Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_SIMPLE);

これにより、最大輪郭領域が検出されます。

double maxArea = 0;
        Iterator<MatOfPoint> each = contours.iterator();
        while (each.hasNext()) {
            MatOfPoint wrapper = each.next();
            double area = Imgproc.contourArea(wrapper);
            if (area > maxArea)
                maxArea = area;
        }

この最大領域をビットマップとして SD カードに保存する方法を知りたいです。どんな助けでも大歓迎です!

//////編集

これは、輪郭を描くために使用されます。これが正しい方法かどうかはわかりません:

 Imgproc.cvtColor(mDilatedMask, mDilatedMask, Imgproc.COLOR_GRAY2BGR);
            Imgproc.drawContours(mDilatedMask, contours, -1, new Scalar(0, 255, 0), 1);
Toast.LENGTH_LONG).show();
            Bitmap bmpOut = Bitmap.createBitmap(mDilatedMask.cols(), mDilatedMask.rows(), Bitmap.Config.ARGB_8888);

            Utils.matToBitmap(mDilatedMask, bmpOut);

            try {
                bmpOut.compress(CompressFormat.JPEG, 100, new FileOutputStream("/sdcard/mediaAppPhotos/bigrect.jpg"));
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
4

1 に答える 1