Detección de borde / borde OpenCV basado en color

Soy bastante nuevo en OpenCV y estoy muy emocionado de aprender más. He estado jugando con la idea de delinear bordes, formas.

Me he encontrado con este código (que se ejecuta en un dispositivo iOS), que utiliza Canny. Me gustaría poder renderizar esto en color y rodear cada forma. ¿Alguien me puede apuntar en la dirección correcta?

¡Gracias!

IplImage *grayImage = cvCreateImage(cvGetSize(iplImage), IPL_DEPTH_8U, 1);
cvCvtColor(iplImage, grayImage, CV_BGRA2GRAY);
cvReleaseImage(&iplImage);

IplImage* img_blur = cvCreateImage( cvGetSize( grayImage ), grayImage->depth, 1);
cvSmooth(grayImage, img_blur, CV_BLUR, 3, 0, 0, 0);
cvReleaseImage(&grayImage);

IplImage* img_canny = cvCreateImage( cvGetSize( img_blur ), img_blur->depth, 1);
cvCanny( img_blur, img_canny, 10, 100, 3 );
cvReleaseImage(&img_blur);

cvNot(img_canny, img_canny);

Y el ejemplo podría ser estas hamburguesas. OpenCV detectaría la empanada y la delinearía.

Imagen original:

Respuestas a la pregunta(1)

Su respuesta a la pregunta