OpenCV cv::dft() Ошибка утверждения iOS

Мне нужна помощь в плохом смысле. Клянусь, я уже неделю искал ответ на этот вопрос, и безуспешно, поэтому я приползаю за помощью.

Моя цель проста. Я пытаюсь использовать библиотеку OpenCV в Xcode. У меня возникла неприятная проблема. У меня есть библиотека OpenCV, которая хорошо работает с cvCanney и cvAdaptive Transforms, но я не могу заставить ее выполнять cv::dft(). Я начал с попытки сделать следующее:

cv::Mat tempMat = [self.imageView.image CVGrayscaleMat];
cv::dft(tempMat, output2); 

Это приведет к ошибке, потому что он не в правильном формате (CV_32FC1). Итак, я попробовал:

cv::Mat tempMat = [self.imageView.image CVMat];
cv::cvtColor(tempMat, output2, CV_32FC1); 
cv::dft(output2, output3); 

и я получаю ту же ошибку. В частности, ошибка гласит:

Assertion failed (type == CV_32FC1 || type == CV_32FC2 || type == CV_64FC1 || type == CV_64FC2) in dft

В качестве обновления исходного вопроса я пытался определить тип с помощью cv::type(), и он возвращает тип = 24. Может ли кто-нибудь объяснить мне, как расшифровать, что означает этот тип? Это неправильный тип? Последняя попытка:

cv::Mat tempMat = [self.imageView.image CVMat];
cv::Mat output2(tempMat.rows, tempMat.cols, CV_32FC1); 


cv::cvtColor(tempMat, tempMat, CV_32FC1); 


int type = tempMat.type();
int type2 = output2.type(); 

Когда я запускаю это, я получаю тип 24 для tempMat и тип 5 для output2. Если я попытаюсь добавить это:

cv::cvtColor(output2, output2, CV_32FC1);

Я получаю ошибку: Assertion failed (scn == 3 || scn == 4) in cvtColor

Есть идеи? Даже если это предложение RTFM, я соглашусь на что угодно. Пожалуйста помоги.

Спасибо.


person justagruvn    schedule 29.05.2012    source источник


Ответы (1)


Я думаю, что это проблема переменного типа и количества каналов.

cv::Mat tempMat = [self.imageView.image CVMat];
cv::Mat output2;
cv::cvtColor(tempMat,output2, CV_BGR2GRAY);
output2.convertTo(output2, CV_32FC1);
cv::dft(output2, output2); 
output2.convertTo(image, CV_8UC1);

Пожалуйста, дайте мне знать, если это сработает, у меня есть аналогичный код в моем проекте, и я пытался получить от него ответ; таким образом, он может содержать некоторые ошибки. И мы можем работать с ним в интерактивном режиме отсюда.

person kunguz    schedule 02.04.2013