embeddedなブログ

組み込みシステムに関することや趣味に関することをダラダラと書いていきます(^^)

XCodeでOpenCV

2022-11-12 09:47:49 | iOS

XCodeでOpenCVを使う方法として、これまでObjective-CからOpenCVを呼び出す方法しか知りませんでしたが、実はいつの間にかSwiftからの呼び出しにも対応していたようです。この辺りを参考に試してみましたので、その方法をご紹介します。

まず、ターミナルでの作業となります。CMakeなど必要なモジュール類をインストールしておきます。

brew cmake
xcode-select --install

展開するフォルダを ~/git として説明します。 ~/git フォルダに移動します。

 ~/git

opencvとopencv_contribをクローンします。後者contribは不要であれば省略してください。私はSfMなどで必要なので含めています。

git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git

iOS用のフォルダに移動します。

cd opencv/platforms/ios

ビルド用に build というフォルダを作成します。

mkdir build

下記コマンドを実行して、ビルドします。最後の--contribオプションはcontribが不要であれば省略してください。また、試していないので分かりませんが、--iphonesimulator_archsオプションはM1 Macの場合にはARMS系に変更が必要かもしれません。

./build_framework.py ./build --iphoneos_archs=arm64 --iphonesimulator_archs=x86_64 --contrib ../../../opencv_contrib

しばらく待って、ビルドが完了すると、buildフォルダ下にopencv2.frameworkが生成されています。

ここからはXCodeでの作業です。OpenCVを使いたいプロジェクトを開きます。プロジェクトフォルダの下にFrameworksというフォルダを作成し、先ほど確認したbuildフォルダ下のopencv2.framework を作成したFrameworksフォルダにコピーします。

Xcodeで、Frameworksというグループを新規に作成します。

buildフォルダ化にコピーしたopencv2.frameworkをXCode画面上のFrameworksの下にドラッグします。

ドラッグした際に聞かれるオプション設定は下記を指定します。

libc++.tbdを追加します。

以上で下準備は完了です。あとは実際にSwift コードにOpenCVを記載することで利用が可能です。

以下はコードのサンプルです。一部変数がサンプル内で宣言されていませんが、ご容赦ください。 

import opencv2

let alg = opencv2.AKAZE.create()
var curKpts:[opencv2.KeyPoint] = []
var curDesc:Mat = Mat()
var mask:Mat = Mat.ones(rows: srcMat.rows(), cols: srcMat.cols(), type:CvType.CV_8UC3)
alg.detectAndCompute(image: srcMat, mask: mask, keypoints: &curKpts, descriptors: curDesc)

 

 

 


最新の画像もっと見る