1
根據文檔,功能cvFindContours()
返回二進制圖像輸入中檢索到的輪廓數量。但是,當我在所有輪廓上運行循環時,檢測到的輪廓數量明顯較少。OpenCV中檢測到的輪廓數量不匹配
一個可能的原因是父函數的子輪廓以及函數的返回值中計數的空洞。即使如此,這個數字也不能與我所用圖片的合理估價相匹配。
這種情況下的返回值是92,而在遍歷所有輪廓時,有15個不同的輪廓。
下面的代碼:
int n = cvFindContours(img_canny_mop, mem, &contours, sizeof(CvContour), CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0));
printf("No of retrieved contours = %d",n);
for (ptr = contours; ptr != NULL; ptr = ptr->h_next)
{
ext_color = CV_RGB(rand()&255, rand()&255, rand()&255); //randomly coloring different contours
cvDrawContours(cc_color, ptr, ext_color, CV_RGB(0,0,0), -1, CV_FILLED, 8, cvPoint(0,0));
//display(cc_color, "CCs");
n_cont++;
}
cvSaveImage("CC_colors.jpg",cc_color);
printf("\nNo of contours = %d",n_cont);
的圖像是:
輸入:http://imageshack.us/photo/my-images/811/cannymop.jpg/
隨機顏色的輪廓:http://imageshack.us/photo/my-images/819/cccolors.jpg/