はじめに
私がVisual Studio 2019 (以下VS2019) でOpenCV を使うまでの軌跡を
備忘録がてら記載していきます.
(※Visual Studio Code ではありません)
先に言っておきます.
最初から最後までイッキ見しようとすると, かなり長いです.
かといって記事を分ける気にもなれず...
目次があるので必要なものを
取捨選択していただくとありがたいです.
環境
Visual Studio 2019
OS: Windows10
目次
前半戦
後半戦
ご自身に必要な部分へジャンプしてください.
前半戦
Visual Studio 2019 をインストール
Windowsユーザーであればデフォルトで入っていることが多いと思いますが
もしアプリケーションがPC内に存在しない場合はインストールしましょう.
しかし, 私がここに記載するより, 公式のDOCが分かりやすいので
こちらをご覧ください.
-Visual Studio に C および C++ サポートをインストールする-
(※MicroSoftアカウントが必要です)
これはワークロード選択画面です.
Desktop development with C++
もしくは
C++によるデスクトップ開発
にチェックを入れるのを忘れないようにしてください.
また, インストールにはわりと時間がかかると思います.
インストール終了後, PCの再起動 を要求されると思うので再起動してください.
再起動後VS2019を起動すると以下のような画像が表示されると思います.
Visual Studio 2019 で C++のコードを実行
C++/Cのコードが実行できるのか実際に試してみましょう.
VS2019を起動
▷新しいプロジェクトの作成(N)を選択
▷コンソールアプリを選択し, 次へ(N)
▷適当なプロジェクト名をつけ, 作成(C)
以上でC++のプロジェクトのエディタ画面が開かれます.
▷エディタの設定
左上(ヘッダーのすぐ下)の水色枠を debug
赤枠を32bitOSなら x86
, 64bitOSなら x64
に設定します.
▷F5キーを押下してデバッグ
デバッグコンソールが開かれ, Hello World!
と出力されます.
適当にキーを押下して終了します.
もしうまくいかなかったら
折り畳みからご覧ください.
**ワークロードの設定を見直してみましょう**
`Desktop development with C++`

**Visual Studio Installer** を起動します.  `変更(modify)` を選択します.  ワークロードの追加などが行えるので, インストール必要なものを インストールしましょう.
[詳しくは公式DOCへ][modifycpp]
OpenCV の環境設定
OpenCVの設定では, インストール後に
- コントロールパネル側の設定 (以下グローバルな設定)
- プロジェクト毎の設定 (以下ローカルな設定)
の二つが必要です. (名称は勝手に私が呼んでいるだけです...)
OpenCV のインストール
まずはインストールです.
「こちらから」 OpenCVの EXEファイルをダウンロードし
EXEファイルを起動してください.
起動すると, 保存先が聞かれるので指定してください.
私は C:\OpenCVforVS
というところに
opencv4.2.0
という名前で保存しました.
(※以降このディレクトリ関係で話を進めますので注意してください)
グローバルな設定
コントロールパネル
>システムとセキュリティ
>
システム
>システムの詳細設定
>システムのプロパティ
の順に開いていきます.
詳細設定
の右下に 環境変数
とあるのでクリックします.
以下のように Path
の 値
をダブルクリックし, 編集画面に行きます.
![]() |
---|
新規(N)
から
C:\OpenCVforVS\opencv4.2.0\build\x64\vc15\bin
を追加します.
![]() |
---|
ローカルな設定
これは, OpenCVを扱うプロジェクト毎に設定します.
主はよくここら辺を徘徊しています.
▷プロパティ設定
ヘッダの プロジェクト
から testProjectのプロパティ
を選択します.
▷構成プロパティの設定
・デバッグ設定
構成プロパティ
>デバッグ
の 環境
の右側をダブルクリックし
C:\OpenCVforVS\opencv4.2.0\build\x64\vc15\bin
と追加する.
・VC++ ディレクトリ設定
ここでは以下の
- インクルード ディレクトリ
- ライブラリ ディレクトリ
を設定します.
まず, 構成プロパティ
>VC++ ディレクトリ
の
インクルード ディレクトリ
の右側をダブルクリックし ;
の後に
C:\OpenCVforVS\opencv4.2.0\build\include
と追加します.
次に, 構成プロパティ
>VC++ ディレクトリ
の
ライブラリ ディレクトリ
の右側をダブルクリックし ;
の後に
C:\OpenCVforVS\opencv4.2.0\build\x64\vc15\lib;
と追加します.
▷ヘッダファイルを追加
構成プロパティ
>C/C++
の
追加のインクルード ディレクトリ
の右側をダブルクリックし
C:\OpenCVforVS\opencv4.2.0\build\include;
と追加します.
▷ライブラリファイルを追加
構成プロパティ
>リンカー
>全般
の
追加のライブラリ ディレクトリ
の右側をダブルクリックし
C:\OpenCVforVS\opencv4.2.0\build\x64\vc15\lib
と追加します.
▷デバッグ用追加ライブラリを設定
左上の 構成
を debug
に切り替えます.
構成プロパティ
>リンカー
>入力
の
追加の依存ファイル
の右側をダブルクリックし
%(AdditionalDependencies)
のすぐ前に
opencv_world420d.lib;
と追加します.
▷リリース用追加ライブラリを設定
左上の 構成
を Release
に切り替えます.
構成プロパティ
>リンカー
>入力
の
追加の依存ファイル
の右側をダブルクリックし
%(AdditionalDependencies)
のすぐ前に
opencv_world420.lib;
と追加します.
これにてOpenCVの設定は終わりです.
VS2019をいったん閉じ, 再起動しておいてください.
ひとまずお疲れ様です.
後半戦
OpenCV を使う
実際に使っていきましょう.
もし, どこかで設定をミスしていると
うまくいかないので, その場合はPath名などを見直しましょう.
画像入出力
▷エディタを少し編集
ヘッダのソリューション プラットフォームを x64
に変更してください. (今回x64のOpenCVを設定したので)
▷ソースコード
OpenCVの要素をいくつか入れてみました.
# include <opencv2/opencv.hpp> //OpenCV読み込み
# include <iostream> //PI用に読み込み
# define PI std::acos(-1.0) //πの動的定義
using namespace cv;
//ソラリゼーション変換関数
Mat soralizationLike(Mat image)
{
Mat look_up_table = Mat::zeros(256, 1, CV_8U);
uchar* lut = look_up_table.data;
for (int i = 0; i < 256; i++)
lut[i] = (sin(3.0 * PI * (i / 255.0 + 1.0 / 2.0)) + 1.0) * 255.0 / 2.0;
LUT(image, look_up_table, image);
return image;
}
//画像出力関数
void showIm(Mat image)
{
image = soralizationLike(image);
resize(image, image, Size(), 0.5, 0.5, INTER_AREA);
namedWindow("openCV", WINDOW_AUTOSIZE);
imshow("openCV", image);
waitKey(0);
}
/* ここからメイン関数 */
int main()
{
//画像読み込み
Mat image = imread("C:\\Users\\user\\Desktop\\glass.png");
//画像表示
showIm(image);
return 0;
}
「関数等の説明」や「LUT」に関しては気になる方は
前投稿の記事を見ていただきたいです. (宣伝)
ここではあくまでOpenCVが使えるかの確認です.
▷出力結果
元画像 | 出力画像 |
---|---|
![]() |
![]() |
無事OpenCVの機能を使うことができました.
Webカメラ
とうとうたどり着きました.
長い長い軌跡にお付き合いありがとうございました.
それでは, サクッと行きましょう.
▷ソースコード
デバッグ用の先ほどのコードは残しておいても大丈夫ですが
main()からの関数呼び出しは消(コメントアウト)してから書き換えてください.
コードの内容については, 公式DOCのサンプルコードと
自分のコードを見比べながら読んでいくとわかりやすいかと思います.
# include <opencv2/opencv.hpp>
# include <iostream> //PI用に読み込み
# define PI std::acos(-1.0) //πの動的定義
using namespace cv;
//関数群省略
int main()
{
Mat frame;
VideoCapture cam(1);
if (!cam.isOpened()) //正常にカメラが起動できなければ終了
{
return -1;
}
while (cam.read(frame))
{
imshow("Origin", frame);
imshow("Sorali", soralizationLike(frame.clone()));
const int key = waitKey(1);
if (key == 'q') //qが押されたらカメラを閉じる
{
break;
}
}
destroyAllWindows();
//画像読み込み
//Mat image = imread("C:\\Users\\user\\Desktop\\glass.png");
//画像表示
//showIm(image);
return 0;
}
▷出力結果
Webカメラに接続できました.
なんかソラリゼーションっていいですよね?
おわりに
長い長い軌跡にお付き合い本当にありがとうございました.
VS2019 の導入からやるとやはり長くなってしまいました.
実際に環境構築するときは, おそらく1時間もかからず終わると思います.
(※ネット環境による)
なぜ VS2019 上に環境構築したかの動機ですが
単に学校の研究で VS2019 と C++ を使いそうで
「C++ なら OpenCV も使えるよなぁ」
といった感じです.
また
「同じような方が, 私よりも短時間で環境構築できればいいな」
「PC買い換えたとき一から調べるの嫌だな」
という思いもあります.
プログラマにとって環境構築というものが厄介で
簡単に人のやる気を吸い取ってしまうものだと思っています. (個人の意見)
VS2019 の使用者とかあまり多そうではないですが
誰かの一助になれればと思います.
それでは
参考
- Visual Studio に C および C++ サポートをインストールする (公式DOC)
- ワークロードやコンポーネントを追加または削除することで Visual Studio を変更する (公式DOC)
- 画像とビデオの読み込みと書き込み (公式DOC)
- OpenCVをVisualStudioのC++で使えるようにしてみた (はてなブログ)