Я играю с открытым исходным кодом 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);
И программа вылетает без ошибок .. .
Какая ошибка, и каков код? – Olivier
Исходный код выглядит корректно, а ваш - нет. (CV_BayerGR2BGR выглядит как артефакт от завершения кода) – berak
ОК, спасибо. Это была попытка девальвировать, поскольку камера дает мне необработанные данные изображения. Однако с исходным кодом я получаю ошибки утверждения при вызове cvtColor. Это потому, что я передаю ему неправильный формат? – anti