VisualStudio 2012（32bit）用OpenCV 3.2.0のビルド

とある事情から、VisualStudio 2012（32bit）用のOpenCV 3.2.0ライブラリをビルドしなくてはいけなくなったため、その手順を書き残していきます。

【とある事情】
OpenCV 2.4.10（32bit）を使用したとき、rectangle()等で指定できる座標が32,767（SHRT_MAX）までであったため
（OpenCV 3.2.0（64bit）はそれ以上でも問題なかった）
しかも、OpenCV 3.2.0に32bitのライブラリ（バイナリ）は用意されていない

# CMakeの用意
OpenCVをビルドするためにはCMakeが必要なため、事前にインストールしておく必要があります。

## CMakeのダウンロード
[https://cmake.org/download/](https://cmake.org/download/)からダウンロードを行います。
今回はバイナリのインストーラでいいため、「cmake-3.9.2-win64-x64.msi」をダウンロードしました。
![image1.png](https://qiita-image-store.s3.amazonaws.com/0/130771/a5f3eb72-2da2-c05c-e68f-5f565dd0c51f.png)

## CMakeのインストール
ダウンロード後、指示に従い、インストールを行います。
![image2.png](https://qiita-image-store.s3.amazonaws.com/0/130771/e6f59f42-265c-861c-c968-9f2d02ca29b9.png)
![image3.png](https://qiita-image-store.s3.amazonaws.com/0/130771/0cdc5d6f-d837-328a-3eb5-cfb40276f3af.png)
![image4.png](https://qiita-image-store.s3.amazonaws.com/0/130771/6c3be577-b71d-ade3-b5ee-bfdfd31869cb.png)
![image5.png](https://qiita-image-store.s3.amazonaws.com/0/130771/89774b17-55bf-6c04-c813-68acbf69bcb7.png)
![image6.png](https://qiita-image-store.s3.amazonaws.com/0/130771/00463b1c-9f6c-03d7-1498-e508d8021b6d.png)
![image7.png](https://qiita-image-store.s3.amazonaws.com/0/130771/3c786bb2-4c65-5e39-a2d4-a59aa806e61c.png)
![image9.png](https://qiita-image-store.s3.amazonaws.com/0/130771/4feb7cb3-ddfd-c49d-598a-32a7b79190cb.png)

# OpenCVのビルド
では本題の32bit用のOpenCVのビルドを行います。

## OpenCVのダウンロード
[github](https://github.com/opencv/opencv)からダウンロードしてきてもよいが、今回はソースがまとまっている[公式のダウンロードサイト](http://opencv.org/releases.html)から取得した。
![image8.png](https://qiita-image-store.s3.amazonaws.com/0/130771/5b7c4ac1-ba5b-42fe-f8f3-1e712a7a02ba.png)
※「Win pack」でもよいが、すでにVisualStudio 2017用のバイナリが含まれれているので、ちょっと目障り（苦笑）

ダウンロード後、zipを解凍してファイルを展開します。
（今回は「C:\opencv-3.2.0\sources」に展開したものとします）

## OpenCVの準備
CMake(cmake-gui)を起動します。
※管理者として実行します

まずはソースのあるフォルダと、出力先のフォルダを指定します。
出力先は存在しないフォルダを指定しても大丈夫です。
![image1.png](https://qiita-image-store.s3.amazonaws.com/0/130771/829356da-3685-961b-6509-a38e76b18eca.png)

次に「Configure」ボタンを押します。
この時、出力先のフォルダがないときは、以下のダイアログが表示されます。
![image2.png](https://qiita-image-store.s3.amazonaws.com/0/130771/43a47f16-80f6-92b2-8492-57021005d025.png)

作成するVisualStudioのバージョンを聞かれますので、今回は2012を指定します。（Win64ではありません）
![image3.png](https://qiita-image-store.s3.amazonaws.com/0/130771/f2cee925-221e-d413-f31e-461e5a579f45.png)

「Finish」ボタンを押すと処理が実行されるのですが、残念ながらエラーになります。
![image4.png](https://qiita-image-store.s3.amazonaws.com/0/130771/b9655453-dbe4-3803-dc54-8ce7e98154eb.png)

そこで、CUDAの設定をOFFにします。
![image5.png](https://qiita-image-store.s3.amazonaws.com/0/130771/be78ae78-a09d-bcd8-ea7f-ac0f1f4f04fe.png)
その後、「Configure」ボタンを押すと、無事、処理が終了します。
さらに「Generate」ボタンを押すと、出力先にプロジェクトファイル「OpenCV.sln」が出力されます。

## OpenCVのビルド
出力された「OpenCV.sln」をVisualStudio 2012で開きます。
![image6.png](https://qiita-image-store.s3.amazonaws.com/0/130771/e088aa62-f1ee-4f9e-4906-372add3ac4ed.png)

その後「INSTALL」プロジェクトのビルドを行います。
※ちゃんと「Release」「Win32」にしてビルドすること

その結果、インクルードファイルは「C:\opencv-3.2.0\build\include」に、ビルドされたライブラリは「C:\opencv-3.2.0\build\install\x86\vc11\lib」に、DLLは「C:\opencv-3.2.0\build\install\x86\vc11\bin」に出力されます。

※バージョンや環境によっては違う場所にできることがあります
　3.3.1→「C:\opencv\build\lib」「c:\opencv\build\bin」

# 最後に
CMakeでエラーになったあと、そこから設定変更を行うという流れが、気分的によろしくないのですが、GUIでできるのは便利かもしれません。
でもどれを外せばいいかなどは、試行錯誤になりそうです。
（エラーメッセージからは判断付きづらい）