OpenCVをCMakeでビルドする方法(グレーコード投影パターンを作成したい)
解決済
回答 2
投稿
- 評価
- クリップ 0
- VIEW 2,383
自分はプロジェクタを使いいろいろやろうとしているところで、その過程でopenCVを利用してグレーコード投影パターン画像を生成しようとしています。
それを生成するまでの過程でのプログラムで異常があると分かったのですがどうやら開発環境の構築があまりうまくいってないということがわかりました。
そこでここに質問された方の回答を参考にビルドしてみたのですがなかなかうまくいきませんでした。
ここで質問したのですが少々期限が迫っていて早めの回答がほしかったので質問しなおしています。
行ったチャートをここに書きますのでわかる方ご教授いけたらすごくうれしいです。
また今後ビルドする方は解決しましたら参考にしてください。
環境は下記のとおりです。
windows7 Professional 64ビット
opencv3.4.3
Microsoft Visual Studio 2010 Professional ver 10.0.40219.1 SP1Rel
<行ったチャート>
<1>
C:\に新規ファイルでOpenCV,そのなかに3.4.3を作成
<2>
OpenCV3.4.3-vc14-vc15.exeを起動して、3.4.3内にEXTRACTするとopencvという
ファイルができたので、中身をコピーして3.4.3内に貼り付け、opencvは消しました
(ここがいけなかったのか・・・?)
<3>
open-cv-3.4.3とopencv-contrib-3.4.3を3.4.3内に貼り付けしました。
<4>
CMake(cmake-gui)を起動し、
「Where is the source code」に「C:\OpenCV\3.4.3\opencv-3.4.3」、
「Where to build the binaries」に「C:\OpenCV\3.4.3\build」としてconfigure、
自分の使っている「visual Studio 10 2010 Win64」、
下はそのまま「use default~」を選択しました。
<5>
「OPENCV_EXTRA_MODULES_PATH」を探し、
「C:/OpenCV/3.4.3/opencv_contrib-3.4.3/modules」を記入しconfigureした。
<6>
そしたら全部の赤が消えると思ったが赤色が消えなかった。
だがそのままConfiguring doneと出たので
Generateをクリック→Gnererating doneとなったのでCMake閉じました。
(この時点でなにかおかしいかもと思いましたが初心者すぎてわかりませんでした・・・)
<7>
C:\OpenCV\3.4.3\buildからOpenCV.slnをダブルクリックし、visual studio 2010を起動して
CMakeTargetsのINSTALLをスタートアップ項目にしました。
<8>
参考質問の指示に従いdebugにし右クリックでビルドを開始しました。
この時点でかなりのエラーと警告(200と400ほど)を吐いており、
なにが足りないのかわからない状況です
自分が質問したURL、そして回答者さんからいただいた参考質問のURLを二つ張っておきます。
ここで自分が質問した内容のURL
参考にした質問のURL
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+1
OpenCV3.4.3-vc14-vc15.exeを起動
この時点で手順どおりになっていないように思います。
最初の手順では、バイナリではなく、OpenCV 及び opencv-contrib のソースコードをダウンロードして、配置するとなっています。まず古い OpenCV はフォルダごと削除してください。
Windows で OpenCV を導入する方法 を参考に、手順どおりにもう一度試してみてはどうでしょうか。Cドライブの場合、E:\ は C:\ に読み替えてください。
自宅のPCでも OpenCV の導入を試しましたが、記述通りの手順でインストールできました。opencv2/structured_light.hpp の include も確認しました。
追記
1. 以下のようなディレクトリ構成を作成する。
sample
├─CMakeLists.txt
└─src
└─main.cpp
CMakeLists.txt の内容
cmake_minimum_required(VERSION 2.8)
project(sample)
add_executable(${PROJECT_NAME} src/main.cpp)
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBS})
main.cpp の内容
#include <opencv2/opencv.hpp>
int main()
{
cv::Mat img(100, 100, CV_8UC3, cv::Scalar(255, 255, 0));
cv::imshow("sample", img);
cv::waitKey();
}
2.CMake GUI を開き、以下のように設定する。
Where is the source code: <sample フォルダのパス>
Where to build the binaries: <sample フォルダのパス>\build
Cofigure する。
Generate する。
(OpenCV をビルドしたときの手順を思い出してください。)
3. <sample フォルダのパス>\build に生成された *.sln ファイルを Visual Studio で開いて、ビルドする。
Visual Studio で Release モードにし、ソリューションエクスプローラーで sample を右クリックして、「スタートアッププロジェクトに設定」を選択
そしてビルドする。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.19%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2018/10/29 12:08
OpenCVが使えるか試すの欄のCMakeLists.txtなどの部分がよくわからず手間取ってるのがあるかもしれません。
よくわからずmain.cppのサンプルだけいれてしまいました。
2018/10/29 12:12
「C:」と、2010を使っているのでで「v10」の部分も書き換えもしました。
2018/10/29 12:20
CMake GUI で、cmake を実行しましたか?上記は CMake を使ったプロジェクトの一般的なビルド手順になります。
2018/10/29 12:45
Where is the source code:C:/OpenCV/3.4.3/sample
Where to build the binaries:C:/OpenCV/3.4.3/sample/build と、設定しました。
OpenCV
└─3.4.3
└─sample(名前つけて作った)
├─CMakeLists.txt(メモ帳で名前つけて中身コピーして作った)
└─src(名前つけて作った)
└─main.cpp
という形で作りました。
作る場所がわるかったのでしょうか?
2018/10/29 12:58
作成されたファイル構成もあっています。
「Error in configuration process, project files may be invalid」の前に CMake GUI の出力欄になにかエラーメッセージが出ませんでしたか?
2018/10/29 13:05
線の間が赤文字でした。(どの部分が赤文字かわからないので自分で線を書きました。)
The C compiler identification is MSVC 16.0.40219.1
The CXX compiler identification is MSVC 16.0.40219.1
Check for working C compiler: c:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/bin/x86_amd64/cl.exe
Check for working C compiler: c:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/bin/x86_amd64/cl.exe -- works
Detecting C compiler ABI info
Detecting C compiler ABI info - done
Detecting C compile features
Detecting C compile features - done
Check for working CXX compiler: c:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/bin/x86_amd64/cl.exe
Check for working CXX compiler: c:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/bin/x86_amd64/cl.exe -- works
Detecting CXX compiler ABI info
Detecting CXX compiler ABI info - done
Detecting CXX compile features
Detecting CXX compile features - done
OpenCV ARCH: x64
OpenCV RUNTIME: vc10
OpenCV STATIC: OFF
=============================================
CMake Error at C:/OpenCV/3.4.3/build/install/x64/vc10/lib/OpenCVModules.cmake:375 (message):
The imported target "opencv_face" references the file
"C:/OpenCV/3.4.3/build/install/x64/vc10/lib/opencv_face343d.lib"
but this file does not exist. Possible reasons include:
* The file was deleted, renamed, or moved to another location.
* An install or uninstall procedure did not complete successfully.
* The installation package was faulty and contained
"C:/OpenCV/3.4.3/build/install/x64/vc10/lib/OpenCVModules.cmake"
but not all the files it references.
Call Stack (most recent call first):
C:/OpenCV/3.4.3/build/install/x64/vc10/lib/OpenCVConfig.cmake:112 (include)
C:/OpenCV/3.4.3/build/install/OpenCVConfig.cmake:140 (include)
CMakeLists.txt:6 (find_package)
===============================================
Configuring incomplete, errors occurred!
See also "C:/OpenCV/3.4.3/sample/build/CMakeFiles/CMakeOutput.log".
2018/10/29 13:42
C:/OpenCV/3.4.3/build/install/x64/vc10/lib/opencv_face343d.lib は実際あるのでしょうか?opencv_face343d.lib はデバッグ用のバイナリです。
もしない場合は OpenCV を入れるときの手順で Visual Studio でビルドするとき、「デバッグ」と「リリース」両方でビルドしましたか?
2018/10/29 13:49
デバッグとリリースの順で両方ビルドしたのですがどちらも多くのエラーをはいてるのがきになりました。
もう一度最初からビルドまでしてみます。
2018/10/29 14:10
リリースにしてビルドする際もかなりのエラーと警告が発生するのですが無視してました。
2018/10/29 14:11 編集
どのようなエラーかいくつかでいいので貼れますか?
関係あるかはわかりませんが、1つ気になるのは Visual Studio 2010 が古いということなんですよね。
最近のコードは C++11 が使われていますから、C++11 の機能を使ったコードは Visual Studio 2010 だとビルドできないはずです。OpenCV 3.4.3 のコードに C++11 が使われているかどうかはちょっとわかりませんが。
2018/10/29 14:16
2018/10/29 14:28
リリースでもデバッグでもこのようにエラーが大量に出ているのであれば、ビルドが失敗してます。
一応確認ですが、手順において当初質問欄にかかれていた`OpenCV3.4.3-vc14-vc15.exeを起動して` など、ダウンロードしたソースコード (opencv_contrib-3.4.3、opencv-3.4.3) を配置すること以外のことはしていないですよね?
Visual Studio 2010 でビルドできるのかはちょっと調べてみますね。
2018/10/29 14:36
(本当にすみませんでした)
頂いたリンクのOpenCVを導入する方法というページ以外のことはしていません。
2018/10/29 14:48
一応、同様の手順を解説されてるサイトを貼っておきます。
https://www.buildinsider.net/small/opencv/003#cmake
CMake まではうまくいって、環境変数の設定も行ったとのことなので、あとはこのビルドだけ通せればいいので、もうひと押しですね。。
ただなぜビルドが通らないのかそのエラーメッセージだけですと、ちょっと原因がわからないです。
2018/10/29 14:50
2018/10/29 14:55
同じくvisual studio 2017 communityというのが無償で提供されてる情報までたどり着きました。
ちょっと導入してきます。
気になる点として新しいのにした場合、CMakeの使ってるvisual studioの選択のところでは
visual studio 15 2017 win64を選択すればいいのでしょうか?
2018/10/29 14:59
コンパイラの選択は「visual studio 15 2017 win64」でよいです。
また環境変数の Path の方に設定するディレクトリの場所もそれに伴いかわります。
2018/10/29 15:07
Pathのほうはこれまでと同じとおりにやれば変わる場所は、vc10をvc15にするくらいですよね?
OPENCV_DIRはそのままで大丈夫ですよね?
インストールが終わったらファイルの作成からやってみます。
2018/10/29 15:10 編集
Path は変更箇所はそこだけですね。一応、Explorer で指定した場所が存在するか確認するとよいと思います。環境変数はアプリケーション起動時に読み込まれるので、変更後は CMake GUI や Visual Studio は一旦閉じて、起動し直す必要があります。
自分も 2017 でうまくいっているので、これでうまくいくといいのですが。。
2018/10/29 17:27
追記の2番について手順を思い出してとありますが、
Where is the source code: <sample フォルダのパス>
Where to build the binaries: <sample フォルダのパス>\build
の指定をして、Cofigureが完了したらそのままGenerateでよいのでしょうか?
2018/10/29 17:41
使えるかどうか試すのは、どういった手順でやればよいのでしょうか?
新たにプロジェクトを生成するのでしょうか?
2018/10/29 17:50 編集
3番は以下です。
<sample フォルダのパス>\build に生成された *.sln ファイルを Visual Studio で開く。
Visual Studio で Release モードにし、ソリューションエクスプローラーで sample を右クリックして、「スタートアッププロジェクトに設定」を選択
そしてビルドして、実行する。
これでどうでしょうか?
2018/10/29 17:58 編集
本当に、ありがとうございます!
これが終わりではなくパターン画像を生成したいのですが、
新しくプロジェクトを作成するのですか?
2018/10/29 18:05
今のサンプルプログラムを書き換えて、続きを作ってもよいですし、新しくプロジェクトを作ってもよいです。
main.cpp に #include <opencv2/structured_light.hpp> とすれば、そのまま通ると思います。
CMake を使わない場合、インクルードディレクトリの設定やライブラリのリンクを Visual Studio のプロジェクト設定ページから手動で設定する必要があり、かなり面倒です。
新しくプロジェクトを作る場合は今 sample プログラムを作ったように CMake を使ってプロジェクトを作ることをおすすめします。
2018/10/29 18:14
環境は構築されましたが、画像を作るプログラムがわからないですがちょっと検索してみたりします。
また質問した場合は、よろしくお願いします!