2012-05-29 3 views
1

Мне нужна помощь в плохом режиме. Клянусь, я искал сейчас 1 неделю для ответа на этот вопрос и не увенчался успехом, поэтому я прибегаю к помощи.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

В качестве обновления к первоначальному вопросу, я пытался определить тип использования резюме :: типа() и возвращает тип = 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, я возьму что-нибудь в этом пункте. Пожалуйста помоги.

спасибо.

ответ

0

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

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); 

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