このページから文字をコピーして貼り付けるのが確実だろう。
できたら「OK」ボタンをクリックする。
これで環境変数の設定は終ったので、環境変数に関する画面は全て閉じて構わない。
ところで、「 C:\opencv\build\x64\vc15\bin 」とはなんだろうか?
これは、OpenCV のファイルのうち、プログラムから利用されるファイルの存在位置を示している。
具体的には、エクスプローラーで下図のようにたどった位置を示している。
下図の状態でアドレスバーの部分を右クリックして「アドレスのコピー」を実行すると、「 C:\opencv\build\x64\vc15\bin 」がコピーされる。
もちろん、本ページを用いる場合は「 C:\opencv\build\x64\vc15\bin 」を本ページからコピーすれば良いが、
エクスプローラーのアドレスバーからもコピーできると知っておくと、今後役に立つことがあるかも知れない。
以上でOpenCVを用いる準備は整った。ここでこちらが用意したファイルをダウンロードして動作確認してみよう。
ただし、ダウンロードしたファイルをそのまま用いても正常に動作しない。内容を理解した上でひと手間加えないと正常動作しないので注意して実行すること。
作成するプログラムは下記のようなものである。
そのため、なんらかの画像をデスクトップに置いておく必要がある。
ここでは、工学院大学のロゴをデスクトップに保存して話を進めることにする。
上のリンク上でマウスを右クリックして、「対象をファイルに保存」や「名前を付けてリンク先を保存」を選択すれば良い。
デスクトップに保存するとわかるが、画像名は kogakuin.png である。
拡張子 .png まで含めたファイル名が必要なため、冒頭で拡張子表示の設定を行なったのである。
次に、こちらで用意したプログラムを圧縮したファイル
をダウンロードして欲しい。
ダウンロード後のダウンロードフォルダは例えば下図のようになるだろう。
ここで、ConsoleApplication1.zip は圧縮されたファイルであるので展開しなければならない。
OpenCV のファイルもこのように圧縮されていたが、OpenCV のファイルは拡張子が .exe であり、ダブルクリックにより展開できた。
しかし、ここで用いるファイルは拡張子が .zip であり、多くの場合、ダブルクリックにより展開できないので注意が必要である。
zip ファイルを展開するには、下図のように、ファイルを右クリックして「すべて展開」を選択する必要がある。
そして、現れたウインドウで「展開」ボタンをクリックして続行すればよい。
ただし、この「圧縮ファイルの展開」の方法は、Windowsに展開用のソフトウェアがプリインストールされている場合は異なることが多い。
例えば、WinRAR というソフトウェアがインストールされている場合、
展開方法は下図のように「ファイルを右クリックして『解凍』を選択」である。
このように、「展開」のことを「解凍」と呼ぶこともあることに注意。
大学では、Lhaplus というソフトウェアがインストールされており、ダブルクリックするだけで展開できた。
どの方法を用いるにせよ、下図のように
「ダウンロードした ConsoleApplication1.zip の他に、展開されて現れた ConsoleApplication1 フォルダがないと
以後の演習は失敗する」
ので注意。
さて、展開されて現れたフォルダの中をたどって行くと、下図のように「ConsoleApplication1.sln」というファイルが見つかる。
sln はソリューションの略である。
このファイルをダブルクリックしよう。
すると、どのアプリケーションで開くか聞かれることがある。Visual Studio 2019 を選択して起動しよう。
このとき「常にこのアプリを用いて .sln ファイルを開く」にチェックをいれておくと良いだろう。
ファイルが開く前に「セキュリティの警告」が出ることがあるがOKして構わない。
すると、以下のようにこちらで用意したファイルが開く。ただし、ソリューションエクスプローラーで
「ソースファイル」の「ConsoleApplication1.cpp」をダブルクリックして開いていることに注意。
このプログラムは、「ユーザー neura のデスクトップにある kogakuin.png という画像を開いて表示する」というプログラムである。
ただし、もちろん皆さんのユーザー名は「neura」ではないので、このままでは皆さんの環境で動作しない。
皆さんの環境で「neura」の部分をどう修正すれば良いか?を考える必要がある。
それを知る方法を以下に記す。
まず、エクスプローラーで下図のようにCドライブ直下に移動し (上で学んだことの復習)、「ユーザー」フォルダをダブルクリックして中に移動しよう。
すると下図のように、ユーザー名の候補であるフォルダ名が現れる。図の場合は「neura」と「student」である。
皆さんは、自分のユーザー名に相当するフォルダを探そう。
そして、そのフォルダ名で、プログラム中の
C:\\Users\\neura\\Desktop\\kogakuin.png
の「neura」の部分を置き換えれば良い。
なお、プログラム上ではフォルダの区切りを表す「\」は二文字重ねて「\\」としなければならないことに注意。
さらに、プログラム中に「word430」という語句が8行目と10行目にある。
これは、OpenCV 4.3.0 に含まれるファイルを指定している。
皆さんがダウンロードした OpenCV のバージョンが 4.3.0 以外である場合、その部分も適切に変更する必要がある。
例えば、OpenCV 4.4.0 なら world440 のように。
具体的には、「 C:\opencv\build\x64\vc15\bin 」フォルダにあるファイル名を指定する必要があるのである。
以上、適切に書き換えたら、キーボードで Ctrl-s を入力して変更を保存した上で、「デバッグ」→「デバッグ開始」を実行しよう。
ここまでの内容が全て問題なく出来ていれば、下図のようにデスクトップ上の kogakuin.png が OpenCV の機能により開かれる。
なお、このページの手順を正しく実行していない場合は何らかのエラーが出るであろう。
考えられる問題としては、例えば下記のようなものがある。
- 32bit版Windowsを使っている
- Cドライブ直下に opencv フォルダが存在しない
- 環境変数 Path に C:\opencv\build\x64\vc15\bin がセットされていない
- 環境変数 Path にセットされているパスが間違えている
- プログラム内の、kogakuin.png の位置の指定を間違えている
- プログラム内の、world430 の部分(8行目と10行目) を適切に書き換えていない
自分の力で問題を見つけること。
さて、以上が初めての OpenCV プログラミングである。
以上では、OpenCV 用の Visual Studio 用プロジェクト (ソリューション) をあらかじめ配布して実行してもらった。
しかし、教科書などで OpenCV を勉強する場合、プロジェクトをゼロから作る方法を知っておいた方が良いだろう。
以下で解説する。
まず、Visual Studio を全て閉じて、スタートメニューから Visual Studio を起動し直す。
そして、下図の「新しいプロジェクトの作成」をクリックする。
そして、下図の「コンソールアプリ」をクリックし、「次へ」をクリック。
下図ではお好みでプロジェクト名を変更し、「作成」をクリック。
Visual Studio が起動したら、まず下図の部分が「x64」になっているか確認。
「x86」などになっていたら、「x64」にする。
そして、メニューの「プロジェクト」→「(プロジェクト名)のプロパティ」を選択。
下図のようなウインドウが開くので、「C/C++」→「全般」を選択し、
「追加のインクルードディレクトリ」に「 C:\opencv\build\include 」を記述。コピーして貼り付けが確実。
同じくプロパティページのウインドウで、「リンカー」→「全般」を選択し、
「追加のライブラリディレクトリ」に「 C:\opencv\build\x64\vc15\lib 」を記述。コピーして貼り付けが確実。
以上が終ったら、プログラムの冒頭部に以下を記述しておけば、OpenCV のプログラムを書けるようになる。
ただし、world430 の部分は C:\opencv\build\x64\vc15\bin に存在するファイル名に書き換えること。
#ifdef _DEBUG
#pragma comment(lib, "opencv_world430d.lib")
#else
#pragma comment(lib, "opencv_world430.lib")
#endif
先程配布したプログラムを丸ごと記すと以下のようになる。自分でゼロから作成したプロジェクトで実行できるか試してみると良い。
もちろん、ユーザー名と「world430」の部分は各自書き換える必要がある。
#include <iostream>
#include <opencv2/opencv.hpp>
#ifdef _DEBUG
#pragma comment(lib, "opencv_world430d.lib")
#else
#pragma comment(lib, "opencv_world430.lib")
#endif
int main()
{
const char* windowName = "Image";
cv::Mat img = cv::imread("C:\\Users\\neura\\Desktop\\kogakuin.png");
cv::imshow(windowName, img);
cv::waitKey(0);
return 0;
}
次のページ「OpenCV で簡単な画像処理を体験する」
Windows 上の Visual Studio で OpenCV を使う