如何使用android和openCV在图像上绘制轮廓并创建边界矩形

时间:2017-08-26 17:31:36

标签: android opencv

如何绘制轮廓并在android中的图像上创建一个边界矩形?

到目前为止,我有什么,

    Mat imageMat = new Mat();

    Utils.bitmapToMat(photo, imageMat);
    Imgproc.cvtColor(imageMat, imageMat, Imgproc.COLOR_BGR2GRAY);
       Imgproc.adaptiveThreshold(imageMat, imageMat, 255,
           Imgproc.ADAPTIVE_THRESH_MEAN_C, Imgproc.THRESH_BINARY_INV, 7, 7);
    List<MatOfPoint> contours = new ArrayList<MatOfPoint>();
    Mat hierarchy = new Mat();
    Imgproc.findContours(imageMat, contours, hierarchy, Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_SIMPLE);


    Bitmap resultBitmap = Bitmap.createBitmap(imageMat.cols(), imageMat.rows(), Bitmap.Config.ARGB_8888);
    Utils.matToBitmap(imageMat, resultBitmap);
    ((ImageView) findViewById(R.id.imageView)).setImageBitmap(resultBitmap);

Binary image

1 个答案:

答案 0 :(得分:0)

请查看DrawContours方法的文档here,然后您可以关注this example

对于边界矩形,请查看上面链接的相同文档,并且(以下this example)有

List<Rect> boundingRects = new List<Rect>();
for (MatOfPoint points : contours){
    boundingRects.append(Imgproc.boundingRect(points));
}

虽然我没有测试过代码(我现在不能测试)但这应该可以解决你的问题(我认为这些例子是合理的,而且它们也是类似问题的确认解决方案)。

让我知道!