OpenCV4Android圆形对象跟踪

时间:2016-02-07 23:44:06

标签: android opencv geometry

我是OpenCV的新用户,尝试使用3.1.0在Android上使用查找轮廓跟踪圆形对象。我正在关注示例颜色blob检测器来编写代码,但是drawContours()函数在我运行应用程序时从不绘制任何内容。这是onCameraFrame()函数,它正在进行所有处理。你能告诉我我做错了吗?

编辑:新版本的代码:仍然没有按预期工作。 drawContours()绘制任何黑色对象,并且该函数产生非常嘈杂的结果。 Here现在看起来像。

public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
    Mat rgba = inputFrame.rgba();
    Mat grayMat = new Mat();
    Imgproc.cvtColor(rgba, grayMat, Imgproc.COLOR_RGBA2GRAY);
    Mat processedMat = new Mat(); 
    Imgproc.threshold(grayMat, processedMat, 0, 255, Imgproc.THRESH_BINARY);

    List<MatOfPoint> contours = new ArrayList<MatOfPoint>();
    List<MatOfPoint> matchedContours = new ArrayList<MatOfPoint>();
    Mat hierarchy = new Mat(); 
    Imgproc.findContours(processedMat, contours, hierarchy, Imgproc.RETR_LIST, Imgproc.CHAIN_APPROX_SIMPLE);
    for(MatOfPoint contour : contours){
        double actualArea = Imgproc.contourArea(contour);
        double width = contour.width();
        double radius = width/2; 
        double calculatedArea = Math.PI * Math.pow(radius, 2);

        if((actualArea - calculatedArea) < 10000) { //chose some arbitrary threshold because I am not sure what to make this
            matchedContours.add(contour);
        }
    }
    Imgproc.drawContours(rgba, matchedContours, -1, new Scalar(0,255,0));
    return rgba; 
}

0 个答案:

没有答案