2017-01-20 5 views
2

私はC++に関する経験はありませんが、iOSアプリケーションでOpenCVとインターフェイスする必要があります。私は正しくビルドしているが、いくつかのC++コードを呼び出すとクラッシュする。cvflann :: anyimpl :: bad_any_castでクラッシュすると、iOS上のパノラマを合成する

このメッセージでクラッシュし、以下のコード:libc++abi.dylib: libc++abi.dylib: terminating with uncaught exception of type cvflann::anyimpl::bad_any_cast terminating with uncaught exception of type cvflann::anyimpl::bad_any_cast

bool stitch(const std::vector <cv::Mat> & images, cv::Mat &result) { 
    Stitcher stitcher = Stitcher::createDefault(false); 

    Stitcher::Status status = stitcher.stitch(images, result); <-- Crash! 

    if (status != Stitcher::OK) { 
     return false; 
    } 

    return true; 
} 

私はstitch(...)への入力または出力が正しくないタイプですが、私はそれを与える必要があるか、どのように変換するかを把握することができないためであると仮定それ。

私が呼んでいる機能は、次のように定義されます

Status stitch(InputArrayOfArrays images, OutputArray pano); 

InputArrayOfArraysOutputArray_InputArray

のすべてのエイリアスは何をしていますか?

編集:これはOpenCV 3.0を使用しています。私が使用しているサンプルコードはOpenCV 2.4用だと思います。多分それが問題です。

+0

OpenCV 2.4に戻っても問題は解決しましたが、私はまだ3.xで試してみたいと思います。 –

答えて

1

openCVではしばらくの間デバッグモードでこのエラーが出力されるとクラッシュするバグが発生しています。 「プロダクト」 - >「スキーム」 - >「スキームの編集」を試して、「実行」のビルド構成を「デバッグ」から「リリース」に変更してください。

+0

https://github.com/opencv/opencv/issues/8018 –

2

私は

#import <opencv2/opencv.hpp> 

は、リンカの警告の束を引き起こし、最終的に任意のOpenCVの関数のすべての呼び出しは、上記のエラーで失敗しました追加し、輸入に関連したIOSで起こって同様の問題を持っていた、問題は、私の後に姿を消しましたより具体的なものに輸入を超える置き換え:私は問題は輸入発注またはインポート重複のいずれかに関連するかもしれないと思い

#import <opencv2/imgcodecs.hpp> 

、世話をし、それが役に立てば幸い...

+0

これは私のために修正されました。私は '#import 'も持っていました。 –

+0

一般的に言えば、一度に1つのヘッダーをインポートしてください。必要な場合は、この場合は '#import 'を入力してください。コンパイルして見つからないものを見つけてください。ステッチングには '#import 'が必要ですが、他にももっと必要なものがあります。結局あなたは行くのが良いです。 –

0

opencv.hppのインクルードを削除することで、最小限のインクルードセットのほうが私にとっても効果的でした。ここに私が私の場合に終わったインクルードがあります。

#import <opencv2/calib3d.hpp> 
#import <opencv2/features2d.hpp> 
#import <opencv2/xfeatures2d.hpp> 
#import <opencv2/imgproc/imgproc.hpp> 

私は一度にFlannBasedMatcher :: knnMatchへの呼び出し内のどこかからbad_any_castを取得し、この溶液を見つける前に、多くの「修正」しようとしました。

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

関連する問題