2012-05-29 68 views
1

我需要一些帮助。我发誓我现在已经找了一个星期来回答这个问题,但都没有成功,所以我爬过来寻求帮助。OpenCV cv :: dft()iOS断言错误

我的目标很简单。我正在尝试在Xcode中使用OpenCV库。我正在讨论令人沮丧的问题。我得到了OpenCV库与cvCanney和cvAdaptive变换很好地协作,但我无法得到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 ::类型()来确定类型,它返回一个类型= 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(); 

当我运行这个时,我得到了tempMat的类型24和output2的类型5。如果我尝试补充一点:

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

请让我知道如果这个工程,我有一个类似的代码在我的项目,并试图从中得出一个答案;因此它可能包含一些错误。我们可以从这里交互式地工作。