Standard Hough Circle Detection
Hello forum,
Ive been trying to write the code for the standard hough circle detection but have not succeded. The code (very simple) is shown below. Basically i perform canny edge detection and then loop through the output and draw a circle when the pixel is not a zero.
int main(int argc, char** argv)
{
image = imread("image.png",CV_LOAD_IMAGE_GRAYSCALE);
image.copyTo(output);
Canny(output, output, 100, 200, 3);
Mat drawing = Mat::zeros(image.size(), CV_8UC1);
for (int i = 0; i < output.rows; i++)
for (int j = 0; j < output.cols; j++)
if (output.at<uchar>(i, j) != 0) circle(drawing, Point(i, j), 4, 10, 1, 8, 0);
}
The problem is, i thought that when 2 circles are drawn overlapping each other, the intersecting pixels would be "brighter". I dont think I should draw each circle on a separate matrix to be added after the double for loop so is there anyway I can write the standard HCT without having too many matrices ?
Haziq
I don't understand your question. If you draw 2 circles with
cv::circle()
the last one will overwrite the pixel value which intersects with the first one with it'scv::Scalar()
value.For drawing circles you get from
cv::HoughCircles()
see the example here.Your code example makes no sense in relation to
cv::HoughCircles()
because I see nocv::HoughCircles()
.