Skip to content

Instantly share code, notes, and snippets.

@atinfinity
Last active June 23, 2023 01:42
Show Gist options
  • Save atinfinity/58b15403fc0062142509673f8e4c5532 to your computer and use it in GitHub Desktop.
Save atinfinity/58b15403fc0062142509673f8e4c5532 to your computer and use it in GitHub Desktop.

macOSでopencv2.frameworkを使う

注意点

OpenCV 4.7.0時点の情報ですが、opencv2.frameworkを作成する環境に以下の制約があります。

  • MacOS 10.15 or later
  • Python 3.6 or later
  • CMake 3.18.5/3.19.0 or later (make sure the cmake command is available on your PATH)
  • Xcode 12.2 or later (and its command line tools)

https://github.com/opencv/opencv/blob/4.7.0/platforms/apple/readme.md

opencv2.framework生成

下記コマンドを実行すると/path/to以下にopencv2.frameworkが生成されます。ここではarm64のmacOS向けのopencv2.frameworkのみをビルドするように指定しています。

cd opencv-4.7.0/platforms/apple
python build_xcframework.py --out /path/to --macos_archs arm64 --build_only_specified_archs

opencv2.frameworkを使う

動作確認のため、以下のサンプルコード(example.cpp)を用います。

#include <opencv2/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>

int main(int argc, const char* argv[])
{
  // 画像データをファイルから読み込む
  cv::Mat src = cv::imread("graf1.png", cv::IMREAD_COLOR);

  // 画像の読み込みに失敗したらエラー終了する
  if(src.empty())
  {
    std::cerr << "Failed to open image file." << std::endl;
    return -1; 
  }

  cv::namedWindow("image", cv::WINDOW_AUTOSIZE);
  cv::imshow("image", src);
  cv::waitKey(0);
  cv::destroyAllWindows();

  return 0;
}

以下のコマンドでopencv2.frameworkを使うようにしてビルドします。OpenCVのcoreモジュール、highguiモジュールで使用しているOpenCL、Cocoaのfraweworkを使う点に注意が必要です。

g++ example.cpp -std=c++11 -F /path/to/opencv2.xcframework/macos-arm64 -framework opencv2 -rpath /path/to/opencv2.xcframework/macos-arm64 -framework Cocoa -framework OpenCL

動作確認環境

  • MacBook Air M1, 2020
  • macOS Venture 13.4
  • OpenCV 4.7.0
xcode-select --version
xcode-select version 2397.
g++ --version
Apple clang version 14.0.3 (clang-1403.0.22.14.1)
Target: arm64-apple-darwin22.5.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
python
Python 3.10.4 | packaged by conda-forge | (main, Mar 24 2022, 17:39:37) [Clang 12.0.1 ] on darwin
Type "help", "copyright", "credits" or "license" for more information.
cmake --version
cmake version 3.26.4

CMake suite maintained and supported by Kitware (kitware.com/cmake).

ToDo

  • opencv2.frameworkにopencv_contribを含めるようにする
  • opencv2.framework生成時のCMakeオプションをカスタムする
  • opencv2.frameworkを使うプログラムのCMakeLists.txtひな形作成
  • Xcodeプロジェクトでopencv2.frameworkを使う

Reference

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment