我正在尝试使用圆检测来检测瞳孔。当我将整个Mat图像(mGray)输入HoughCircles函数时,它会检测到许多圆圈,但是当我将Mat图像缩小到面部ROI或眼睛区域ROI时,它不会检测到任何圆圈。
这是我的代码:
faceROI = mGray.submat(facesArray[i]);
Imgproc.GaussianBlur(faceROI,faceROI, new Size(9,9),2,2);
Mat circles = new Mat();
Imgproc.HoughCircles(faceROI,circles,Imgproc.CV_HOUGH_GRADIENT,2,150,200,100,0,0);
for (int x = 0; x<circles.cols(); x++) {
double Circle[] = circles.get(0, x);
Point center = new Point(Math.round(Circle[0]), Math.round(Circle[1]));
int radius = (int)Math.round(Circle[2]);
Core.circle(mRgba, center,2, new Scalar(0,0,255),4);
Core.circle(mRgba,center,radius,new Scalar(0,0,0),4);
}
我的参数设置正确吗?有什么我不能正确理解吗?
谢谢!
答案 0 :(得分:0)
我怀疑你在mRgba图像中绘制圆圈时没有移动检测到的中心(在ROI坐标中检测到它们),如果应用移位无效,请尝试在霍夫检测器中减少阈值。