i've image: edit sorry had remove images! i need extract contour of non-black picture, used findcontour cv_retr_external parameter, obtain this: here's code: static mat canny_output, grey,draw; vector<vector<point>> contours; cvtcolor(final_img, grey, cv_bgr2gray); canny(grey, canny_output, 100, 200); findcontours(canny_output, contours, cv_retr_external, cv_chain_approx_simple); draw = mat::zeros(canny_output.size(), cv_8uc3); (size_t = 0; < contours.size(); i++) { drawcontours(draw, contours, i, scalar(255, 0, 0)); } how can resolve? simply add binarization minimal threshold, , remove canny: cvtcolor(final_img, grey, cv_bgr2gray); //threshold=1: low value, anyway rest of image pure black threshold(grey, binary, 1, 255, cv_thresh_binary); findcontours(binary, contours, cv_retr_external, cv_chain_approx_simple);