Проблемы с переводом GreyScale - PullRequest
0 голосов
/ 30 января 2011

Я получаю следующую ошибку:

cv.error: Incorrect number of channels for this conversion code

из следующего фрагмента кода:

cv.CvtColor(frame, gray, cv.CV_BGR2GRAY)

есть рекомендации?

Ответы [ 2 ]

2 голосов
/ 30 января 2011

Проверьте количество каналов frame и gray.Либо используйте отладчик, либо поставьте эту строку перед преобразованием:

printf("frame.nChannels: %d gray.nChannels: %d\n", frame.nChannels, gray.nChannels);

frame должно быть 3 канала (RGB).gray должен быть 1 канал.Все, кроме этого, и преобразование не удастся.В этом случае:

  • Вы можете принудительно загрузить frame в всегда как RGB, передав cv.CV_LOAD_IMAGE_COLOR в качестве второго аргумента cv.LoadImage, если вы загружаетеэто из файла
  • Убедитесь, что при создании gray вы указываете, что он имеет только 1 канал, например gray=cv.CreateImage(cv.GetSize(frame), frame.depth, 1)

Посмотрите на OpenCV API для соответствующих функций для получения дополнительной информации.Раздел о Python является главой 3, но поскольку обертки Python просто повторно используют базовый код C, первая часть также имеет значение.

0 голосов
/ 30 января 2011

Похоже, frame не RGB-изображение, не так ли?

...