Detecting objects with a certain surface area
Hi guys,
I'd like to detect small but undefined shapes with a certain value of surface area, say 25 pixels worth. Now, I tried coding by calculating an array of pixels with adjacency but it seems pretty tedious and demanding for the debugging.
Let's say I want to detect an image with at least 3 x 1 green pixels (where I have performed threshold the image to a binary black & green form):
for (int i = 0; i < Image.rows; i++){
if (Image.at<cv::Vec3b>(i , 200)[1] == 255){
if (Image.at<cv::Vec3b>(i+1 , 200)[1] == 255){
if (Image.at<cv::Vec3b>(i+2 , 200)[1] == 255){
putText(Image, "Detected", Point(20, 20), FONT_HERSHEY_PLAIN, 1, Scalar::all(255), 2, 8);
}
}
}
}
Now, this seemed to work but occasionally it'll crash due to the memory.
I suppose there are workarounds to this? How do I do this?
Thanks bros.