Всякий раз, когда я передаю изображение в cvStartFindContours, вместо нахождения контуров мое изображение становится полностью черным. Я понятия не имею, почему. Я знаю, что это не вызвано другой частью кода, даже если я закомментирую все, но оставлю в вызове функции cvStartFindContours, мое изображение по-прежнему становится черным. Однако, как только я закомментирую вызов cvStartFindContours, мое изображение остается нормальным. Почему это происходит? Изображение, которое я передаю (skinMask), представляет собой 8-битное 1-канальное изображение (IPL_DEPTH_8U) с данными CONTAINS. (он не черный, на нем кусочки белого).
Почему мое изображение становится черным? Спасибо
void connectedComponents ()
{
cvMorphologyEx (skinMask, skinMask, 0, 0, CV_MOP_OPEN, 1);
cvMorphologyEx (skinMask, skinMask, 0, 0, CV_MOP_CLOSE, 1);
CvMemStorage *connectedCompStorage = cvCreateMemStorage (0);
CvSeq *temp = NULL; //used to loop through contour perimeter checking
CvSeq *connectedComp = NULL; //stores all derived connected component contours
CvContourScanner connectedCompScanner = cvStartFindContours (skinMask, connectedCompStorage); //FUNCTION CALL CAUSING PROBLEMS
while ((temp = cvFindNextContour (connectedCompScanner)) != NULL)
{
double perimeter = cvContourPerimeter (temp);
if (perimeter < CC_PERIMETER_THRESH)
{
cvSubstituteContour (connectedCompScanner, NULL);
}
else
{
temp = cvApproxPoly (temp, sizeof (CvContour), connectedCompStorage, CV_POLY_APPROX_DP, 2, 0);
cvSubstituteContour (connectedCompScanner, temp);
}
}
connectedComp = cvEndFindContours (&connectedCompScanner);
cvZero (skinMask);
for (temp = connectedComp; temp != NULL; temp = temp -> h_next);
{
cvDrawContours (skinMask, temp, cvScalar (255, 255, 255), cvScalar (0, 0, 0), -1, CV_FILLED, 8);
}
cvReleaseMemStorage (&connectedCompStorage);
}