当社調べによりOpenCVはインストール方法が25万通りあることが判明しています。プラットフォームや使う言語によっても様々でわけわからなくなったので今後のためにメモっておきます。
とにかく「やるか」と思った時に手を出すのが肝心で、環境構築が面倒だったり時間がかかるとそれだけで萎えてしまいます。(環境構築が楽しいという意見もありますが・・・)
言語はC++、OSはOSXを使うことを想定しています。Pythonを使ってやるのが簡単で良いよという話を聞くのですが、結局それらはC++のラッパーなのでどのみちC++を理解していないと辛い部分があるようです。
cmakeをインストール
プログラムを書くたびにg++でオプションを設定するのは流石にめんどくさいのでビルドツールを使います。cmakeがインストールされていない場合はbrewでインストール。
$ brew install cmake
テストプログラムの作成
main.cpp
#include <opencv2/opencv.hpp> int main() { cv::Mat img = cv::imread("../sample/test.png", -1); if(img.empty()) { return -1; } cv::namedWindow("ex", cv::WINDOW_AUTOSIZE); cv::imshow("ex", img); cv::waitKey(0); cv::destroyWindow("ex"); return 0; }
「詳解 OpenCV3(オライリージャパン)」のサンプルコードをほぼまんまコピペしました。../sample/test.pngをキーを押すまで表示するプログラムです。
CMakeLists.txt
cmake_minimum_required(VERSION 3.1) project (test) //プロジェクト名 set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") //コンパイルオプション find_package(OpenCV REQUIRED) include_directories( ${OpenCV_INCLUDE_DIRS} ) add_executable(main main.cpp) target_link_libraries(main ${OpenCV_LIBS})
find_package(OpenCV REQUIRED)
の部分で先ほどbrewでインストールした/usr/local/share/OpenCVを検索しています。検索にはルールがあるようですがこの記事が詳しいです。
find_packageの動作
/usr/local/share/OpenCV/の中には ${OpenCV_INCLUDE_DIRS}や${OpenCV_LIBS}が定義されているファイルがあり、それを元にリンクなどが行われます。最終行のtarget_link_libraries(main ${OpenCV_LIBS})
では使われないライブラリまでリンクしてしまい、あまり良くないのですが最初なので良いことにします。