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();
}