M1 MacBook AirでOpenCVをビルドする
はじめに
M1のMacにてARM64ネイティブでOpencvを利用するため、OpenCV(contribも)のソースコードを取得しビルド、簡単な画像処理のコードを走らせるまでをまとめます。
環境
- マシン: MacBook Air (M1 / RAM 16GB / SSD 512GB)
- OS: macOS Big Sur 11.1
やること
- 開発環境の準備
- OpenCVソースコードのダウンロード
- CMake.appでOpenCVのビルド環境の生成
- ビルド→インストール
- テストプログラムの実行
開発環境の準備
- 開発環境の準備
- OpenCVソースコードのダウンロード
- CMake.appでOpenCVのビルド環境の生成
- ビルド→インストール
- テストプログラムの実行
開発環境の準備
OpenCVをビルドするため、次のソフトをインストール。
* XCode
* CMake 執筆時点ではcmake-3.19.2-macos-universal.dmg。
OpenCVソースコードのダウンロード
OpenCVとOpenCV contribのソースコードをGitHubから取得。執筆時点ではver.4.5.1。
$ mkdir ~/src
$ cd ~/src
$ mkdir _GitHub
$ cd _GitHub
$ git clone https://github.com/opencv/opencv.git
$ git clone https://github.com/opencv/opencv_contrib.git
$ cd opencv
$ mkdir build
CMakeでビルド環境を生成
CMake.Appを立ち上げ、OpenCVのCMakeLists.txtがあるフォルダと、先ほど作ったbuildフォルダを指定。
Configureボタンを押して、
* 生成するプロジェクト:「Unix Makefiles」
* コンパイラ:「Use default native compilers」
を選択。
赤く表示される項目のうち、次を設定。
* OPENCV_EXTRA_MODULES_PATH: ~/src/_GitHub/opencv_contrib/modules
再びConfigureボタンを押す。赤い表示が無くなったら、Generateボタンを押してMakefileを生成。
ビルド→インストール
buildフォルダに移動し、makeを実行。ビルドにかかる時間は約10分。
ここで「make -j」とすると、SWAPが16GBくらいになり、途中でビルドがほぼ止まってしまうので注意。
$ cd ~/src/_GitHub/opencv/build
$ make -j4
ビルドが無事に終わったら、インストールを行う。
$ sudo make install
(2021.01.04 追記)ビルドされたライブラリはARM64。
$ file /usr/local/lib/libopencv_world.4.5.1.dylib
/usr/local/lib/libopencv_world.4.5.1.dylib: Mach-O 64-bit dynamically linked shared library arm64
テストプログラムの実行
プログラム作成
簡単な2値化処理のプログラムを作成する。cmakeを使うのが何かと便利なので、main.cppと同じフォルダにCMakeLists.txtを作る。
#include <opencv2/opencv.hpp>
#include <chrono>
int main(int argc, char** argv) {
cv::Mat img, imgThr;
img = cv::imread(argv[1]);
imgThr = cv::Mat(img.size(), img.type());
cv::threshold(img,imgThr, 128,255,cv::THRESH_BINARY);
cv::imshow("result", imgThr);
cv::waitKey(0);
return 0;
}
cmake_minimum_required(VERSION 2.8)
project(OpenCvTest)
# Create Main project
set(SOURCES
main.cpp
)
find_package(OpenCV REQUIRED) ##Load OpenCV environment
##OpenCV include paths
include_directories(
${OpenCV_INCLUDE_DIRS}
)
##executable name
add_executable(
${PROJECT_NAME} ${SOURCES}
)
##Library linkage
target_link_libraries(
${PROJECT_NAME} ${OpenCV_LIBRARIES}
)
ビルド
main.cppと同じフォルダで以下のコマンドを実行。
cmakeがあるフォルダにパスを通してないので、フルパスで指定する。
$ mkdir build
$ cd build
$ /Applications/CMake.app/Contents/bin/cmake ..
$ make
(2021.01.04 追記)ビルドされたアプリはARM64。
$ file ./OpenCvTest
src/OCVtest/build/OpenCvTest: Mach-O 64-bit executable arm64
プログラム実行
$ ./OpenCvTest ../lena_std.tif
Author And Source
この問題について(M1 MacBook AirでOpenCVをビルドする), 我々は、より多くの情報をここで見つけました https://qiita.com/uepi_yfm/items/07bc7590c5f7b23169fb著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .