openCV SDK for android 附带的名为“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;
}
我想知道如何将这个最大的区域作为位图保存到 sdcard 中。任何帮助是极大的赞赏!
//////编辑
这用于绘制轮廓。我不确定这是否是正确的方法:
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();
}