关于opencv中提取轮廓函数findContours的问题

Mat img0 = imread(filename, 1); // img0----CV_8UC3

cvtColor(img0, gray, COLOR_BGR2GRAY); // gray----CV_8UC1
gray = Scalar::all(0);
/*检测轮廓*/
findContours(gray, contours, hierarchy, CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE);

将上面第二行和第三行改成 :Mat gray(img0.size(),CV_8UC1,Scalar::all(0));
再用下面的检测轮廓函数检测出的contours一直为0 怎么回事?请大神们指教!

我记得提取目标轮廓首先是对其进行边缘检测(比如canny算子),然后再寻找边缘。但是一般在边缘检测的时候,需要先将RGB图转化为GRAY图。你这样更改之后,并没有将你想进行轮廓提取的图进行轮廓提取操作,而是错误的将你全部设置为0的图进行了轮廓操作。如果你重新设置为255,也会出现全是0的错误。