1

悪い意味で助けが必要です。私はこれに対する答えを1週間探しましたが、うまくいかなかったので、助けを求めてクロールしています.

私の目標は単純です。Xcode で OpenCV ライブラリを使用しようとしています。私はイライラする問題についていくつかのラウンドを抱えています。cvCanney と cvAdaptive Transforms でうまく動作するように OpenCV ライブラリを取得しましたが、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() を使用して型を判別しようとしましたが、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(); 

これを実行すると、tempMat のタイプが 24 になり、output2 のタイプが 5 になります。これを追加しようとすると:

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

エラーが発生します:Assertion failed (scn == 3 || scn == 4) in cvtColor

何か案は?RTFM の提案であっても、現時点では何でも受け入れます。助けてください。

ありがとうございました。

4

1 に答える 1

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

これが機能するかどうか教えてください。プロジェクトに同様のコードがあり、そこから答えを導き出そうとしました。したがって、いくつかのエラーが含まれている可能性があります。そして、ここからインタラクティブに作業できます。

于 2013-04-02T14:08:30.747 に答える