IOSプロジェクトにOpenCVをインストールする方法について 手順 に従いました。ただし、Xcode 7を使用する場合は、プレフィックスヘッダーを手動で追加する必要がありました。残念ながら、これを行っても効果はなく、コンパイルエラーが発生していました。次に、インポートを手動で追加し、Xcode 7でプレフィックスヘッダーを使用しないことが最善であることを示唆する別の投稿を読みました。
これが私のコードです:
#import "ViewController.h"
#import <opencv2/opencv.hpp>
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import <opencv2/highgui/cap_ios.h>
//using namespace cv;
@interface ViewController ()
{
IBOutlet UIImageView* imageView;
IBOutlet UIButton* button;
}
- (IBAction)actionStart:(id)sender;
@end
ただし、それでも次のエラーが発生します。
Using名前空間cvのコメントを解除すると、私は次のようになります:
ヘッダーをSwiftなどに公開することについて話しているいくつかの複雑なソリューションを見つけました。プロジェクトをXcode7を使用してObjective-Cで動作させたいだけです...
OpenCVはC++
フレームワークです。つまり、OpenCVを使用するコードは、C
解釈ではなくC++
解釈でコンパイルする必要があります。
表示されるエラー(例: using namespace cv;
を使用すると、コードがObjective-C++コンパイラではなくObjective-Cコンパイラを使用してコンパイルされることを示します。
コメントで述べたように、これを実現する最も簡単な方法は、opencvヘッダーを#include
sするファイルに名前を付ける必要があることを確認することです。 ViewController.mm
、つまり、Objective-C++ファイルである必要があります。
または、ユーティリティペインでファイルタイプのObjective-C++ Source
オプションを明示的に選択することにより、ファイルのType
を選択して上書きすることもできます。
私はまったく同じ問題を抱えていました。私はOpenCVでSwiftプロジェクトで働いています。
Swiftに関しては、OpenCVへのエントリポイントは私がOpenCVWrapperと呼んだファイルです。だから私はOpenCVWrapper.hとOpenCVWrapper.mmを手に入れました。プロジェクトのブリッジヘッダーで、#import "OpenCVWrapper.h"を取得しました。
OpenCVWrapper.mmから呼び出すことができるObjective-C++でMatUtilsというクラスを作成したかったのです。それらがそこに表示されるようにするには、MatUtils.hに配置する必要がありました。
簡単に言うと、間違いは、OpenCVWrapper.hで#import "MatUtils.h"を実行したことです。間違い!!!! OpenCVWrapperがブリッジヘッダーにあるため、SwiftからC++にアクセスできるようになりました。
クイックフィックス:OpenCVWrapper.mmの#import "MatUtils.h"!
乾杯! bRo
#import < opencv2/opencv.hpp >
の前に#import "ViewController.h"
を配置してみてください。 ソース