2016-02-08 7 views
0

Я играю с открытым исходным кодом openCv. С предоставленными наборами изображений он отлично работает, но когда я пытаюсь передать ему поток живой камеры или даже записанные кадры из этого потока камеры, он сработает. Я предполагаю, что это связано с типом cv :: Mat, разными каналами изображения или некоторым преобразованием, которое я не делаю.OpenCv, получить информацию об изображении

Прилагаемый набор данных имеет серое значение, 8 бит, а также мои изображения. Приложение ожидает оттенки серого (CV_8U).

Мой вопрос:

Учитывая один из (рабочих) при условии, изображений, и один из моих зарегистрированных (не работает) изображений, что это лучший способ, чтобы сравнить их с помощью OpenCV, чтобы выяснить, в чем разница может быть, это вызывает мои аварии?

спасибо.

Я попытался:

Комментируя этот код (который дал ошибку утверждения)

if(mImGray.channels()==3) 
    { 

      cvtColor(mImGray,mImGray,CV_BGR2GRAY); 
      cvtColor(imGrayRight,imGrayRight,CV_BGR2GRAY); 

    } 
    else if(mImGray.channels()==4) 
    { 

      cvtColor(mImGray,mImGray,CV_BGRA2GRAY); 
      cvtColor(imGrayRight,imGrayRight,CV_BGRA2GRAY); 

    } 

И заменить его:

cv::Mat TempL; 
    mImGray.convertTo(TempL, CV_8U); 
    cvtColor(TempL, mImGray, CV_BayerGR2BGR); 
    cvtColor(mImGray, mImGray, CV_BGR2GRAY); 

И программа вылетает без ошибок .. .

+0

Какая ошибка, и каков код? – Olivier

+0

Исходный код выглядит корректно, а ваш - нет. (CV_BayerGR2BGR выглядит как артефакт от завершения кода) – berak

+0

ОК, спасибо. Это была попытка девальвировать, поскольку камера дает мне необработанные данные изображения. Однако с исходным кодом я получаю ошибки утверждения при вызове cvtColor. Это потому, что я передаю ему неправильный формат? – anti

ответ

2

Вы можете попробовать этот код:

if (mImGray.depth() != CV_8U) 
    mImGray.convertTo(mImGray, CV_8U); 

if (mImGray.channels() == 3) 
{ 
    cvtColor(mImGray, mImGray, COLOR_BGR2GRAY); 
} 

Или вы можете определить новый Mat с функцией create и использовать его.

Смежные вопросы