我是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;
}