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
下記コマンドを実行すると/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
動作確認のため、以下のサンプルコード(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).
- opencv2.frameworkにopencv_contribを含めるようにする
- opencv2.framework生成時のCMakeオプションをカスタムする
- opencv2.frameworkを使うプログラムのCMakeLists.txtひな形作成
- Xcodeプロジェクトでopencv2.frameworkを使う