
【visual studio2010におけるopencv利用上でのコンパイルエラー】
当方visual studioもopencvも初心者です。踏まえてお答えいただけると大変助かります。
この度、オプティカルフローに関する勉強をしようとopencvの利用を始めました。
しかし、以下の文章が出てきてコンパイルができません。
optical_flow.cpp(1): warning C4627: '#include "cv.h"': プリコンパイル済みヘッダーの使用を検索中にスキップされました
ディレクティブを 'StdAfx.h' に追加するか、プリコンパイル済みヘッダーをビルドし直します
optical_flow.c++(2): warning C4627: '#include "highgui.h"': プリコンパイル済みヘッダーの使用を検索中にスキップされました
ディレクティブを 'StdAfx.h' に追加するか、プリコンパイル済みヘッダーをビルドし直します
(この後は、上記ヘッダファイル内で宣言していると思われる関数が無効である。という旨のエラーメッセージが延々と続きます)
visualstudio上の設定はしっかりと行い、環境設定上のpath設定も行いました。なお、設定は下記URLに従って行い、白い画面が出るプログラムまでは正常に動作しました。
http://imagesensing.seesaa.net/article/200532994 …
しかし、以下のHPに記載されているオプティカルフローのサンプルプログラムを動かそうとすると上記のヘッダファイルが開けない。という旨のエラーメッセージが出ます。
http://opencv.jp/sample/optical_flow.html
そのままコンパイルしようとした際、プリコンパイルヘッダーをソースに追加する指示が一度出たので#include "StdAfx.h"はソースに追加してあります。
プリコンパイルヘッダーを使用しない。という設定も試みましたがダメでした。
解決法を教えてください。宜しくお願いします。
No.6ベストアンサー
- 回答日時:
>Releaseで依存ファイル等設定し直してビルドしましたがダメでした。
「プリコンパイル済みヘッダーは使わない。」にしておいたほうがいいでしょう。
使うなら使うで、ソース側を正しく修正するべきです。
で……
Release構成の「追加のインクルードディレクトリ」の指定が間違っています。
"C:\OpenCV2.2\include\opencv"ではなく"C:\OpenCV2.2\include"です。
実行時にVSの出力ウィンドウに表示される
「Cannot find or open the PDB file」とか「バイナリはデバッグ情報と一緒にビルドされませんでした。」は無視しても良いでしょう。
自分で作ったDLLなどの場合で、デバッグするなら重要でしょうが、そうでなければ無視して問題ないと。
# 中まで追いかけたいとかいうならデバッグ情報なり入手する必要はあるかも知れませんが…初心者のすることでもないでしょう。
>Debugモードで行うと、一瞬cmdの窓は出てくるのですが、すぐに消えてしまいます。
コードの
> if (argc != 3 ||
>(src_img1 = cvLoadImage (argv[1], CV_LOAD_IMAGE_GRAYSCALE)) == 0 ||
>(src_img2 = cvLoadImage (argv[2], CV_LOAD_IMAGE_GRAYSCALE)) == 0)
>return -1;
が、何を示しているのか…理解されていないということですね。
プロセスのコマンドラインで引数が2つ必要(argc != 3の部分)で、それぞれcvLoadImage()が読み込める画像ファイル名である必要があります。
プロジェクトの構成プロパティで「デバッグ」の「コマンド引数」に画像ファイルを2つ「フルパスで」記述してください。
# ファイル名だけでもOKだったりしますが、その場合は「作業ディレクトリ」で指定されてい場所に置いておく必要があります。
# 作業ディレクトリがなんなのか…について理解していないのならフルパスで記入してください。
ちなみに私の場合は
「P:\optical_flow\image_sample20-1.jpg P:\optical_flow\image_sample20-2.jpg」となりました。
なお、Debug構成とRelease構成で別々に設定が必要ですのでご注意を。
回答ありがとうございます!
なるほど!コマンドラインでの画像入力をしたことがなかったのでプログラム起動時に画像パスの入力を求められるものだと勝手に思っていました。コマンド引数にパスを入力するのですね。。
相対パスで入力し、無事動作しました。
丁寧に最後まで教えていただきありがとうございました。本当に助かりました。
No.5
- 回答日時:
> PDBがないのはOpenCVのdistributionに含まれていないんだからアタリマエ。
ああ、ごめんなさい。Windows-APIのデバッグシンボル"も"ないのか。
...やっぱり要らんよね? Release-modeでは無問題ですよね。
この回答への補足
epistemeさん
度々の回答ありがとうございます。
Releaseで依存ファイル等設定し直してビルドしましたがダメでした。
結果は以下です。
1>optical_flow.c++(1): warning C4627: '#include <opencv\cv.h>': プリコンパイル済みヘッダーの使用を検索中にスキップされました
1>ディレクティブを 'StdAfx.h' に追加するか、プリコンパイル済みヘッダーをビルドし直します
1>optical_flow.c++(2): warning C4627: '#include <opencv\highgui.h>': プリコンパイル済みヘッダーの使用を検索中にスキップされました
1>ディレクティブを 'StdAfx.h' に追加するか、プリコンパイル済みヘッダーをビルドし直します
1>optical_flow.c++(8): error C2065: 'IplImage' : 定義されていない識別子です。
・
・
・
とこのメッセージの後「定義されていない識別子です。」や、「識別子が見つかりませんでした。」というメッセージがかなりの数で続きます。
Debugモードで行うと、一瞬cmdの窓は出てくるのですが、すぐに消えてしまいます。
エラーメッセージの最後に
・
・
・
'optical_flow.exe': 'C:\Windows\SysWOW64\msctf.dll' を読み込みました。Cannot find or open the PDB file
プログラム '[5536] optical_flow.exe: ネイティブ' はコード -1 (0xffffffff) で終了しました。
とあるので、おそらく-1がreturnされてしまっているようです。
プログラム自体は動作していません。
一応、ヒューマンエラーの可能性も考えて以下に私がビルドしようとしているプログラムファイルを載せておきます。
http://kie.nu/fBp
パスワード:optical
No.4
- 回答日時:
PDBがないのはOpenCVのdistributionに含まれていないんだからアタリマエ。
PDBはデバッグ情報だからなくてもいぃんじゃね? 動かなかったですか?
No.3
- 回答日時:
この回答への補足
epistemeさん
解答ありがとうございます。
ファイル確認しました。ありがとうございます。
確かに、コンパイルエラーは出ませんでした。が、今度はdllの読み込みでエラーが出たようです。
>'optical_flow.exe': 'C:\Users\ken\Documents\Visual Studio 2010\Projects\optical_flow\Debug\optical_flow.exe' を読み込みました。シンボルが読み込まれました。
>'optical_flow.exe': 'C:\Windows\SysWOW64\ntdll.dll' を読み込みました。Cannot find or open the PDB file
>'optical_flow.exe': 'C:\Windows\SysWOW64\kernel32.dll' を読み込みました。Cannot find or open the PDB file
・
・
・
と各dllファイルの読み込みに関してCannot find or open the PDB fileというメッセージが出ます。
他の質問を探した結果、ランタイム?というものをインストールすると書いてあるのを見つけました。
が、具体的に何をどうすればよいのかが分かりませんでした。
動作環境の違いでしょうか?一応、私の動作環境を以下に書いておきます。
OS : Windows7 64bit
使用しているVSのver : Microsoft Visua Studio 2010 (Professional)
使用しているOpencv : OpenCv2.2
No.2
- 回答日時:
>optical_flow.c++(9): error C3872: '0x3000': この文字を識別子で使用することはできません
>optical_flow.c++(9): error C2065: ' IplImage' : 定義されていない識別子です。
9行目になんかヘンなの混じっているようですけど?
全角スペースとか入っていませんか?
# UNICODEで全角スペースが0x3000っぽいですが。
この回答への補足
Wr5さん
度々の回答ありがとうございます。
原因は不明ですが全体的にスペースが全角になっていました。お騒がせして申し訳ありませんでした。
また、新しくdllの読み込みでエラーが出ているのでNO.3さんへの回答をご覧いただいて回答いただけると幸いです。
No.1
- 回答日時:
>しかし、以下のHPに記載されているオプティカルフローのサンプルプログラムを動かそうとすると上記のヘッダファイルが開けない。
という旨のエラーメッセージが出ます。どのようにプロジェクトを作成したのでしょうか?
新規に作成した場合、先に掲示されたページの「【2】openCVの環境設定」はやり直す(というかプロジェクト毎に別の設定になる)必要がありますが……。
# 構成プロパティの「VC++ ディレクトリ」で「インクルードディレクトリ」「ライブラリディレクトリ」に追加すると…他のプロジェクトにも適用されますかねぇ……。
# 未確認ですが。
# ただし、その場合でも「追加のライブラリファイル」の指定(リンカーの入力・追加の依存ファイル)は必要です。
>プリコンパイルヘッダーを使用しない。という設定も試みましたがダメでした。
どんなエラーが出ましたか?
>解決法を教えてください。
最初に掲示されたページの「【2】openCVの環境設定」を行い、
サンプルソースの
#include <cv.h>
#include <highgui.h>
を
#include <opencv\cv.h>
#include <opencv\highgui.h>
に変更、プリコンパイルヘッダは使用しないに設定してビルドすると……
ライブラリが見つからない。と言われましたので……
ライブラリディレクトリにあるライブラリファイルを追加の依存ファイルに突っ込んでみました。
# Debugビルドなので、
# dir /b C:\OpenCV2.2\lib\*d.lib
# で表示されたファイルを指定。
# リリースビルドの場合はdが付かないヤツになりますな。
ということで、とりあえずビルドは出来ました。
入力ファイルとか用意していないので、「ビルドが通る」ということを確認しただけですが。
ちなみに使ったのは、
http://sourceforge.net/projects/opencvlibrary/fi …
から
OpenCV-2.2.0-win32-vs2010.exeをDLしてインストールしたもの…です。
この回答への補足
回答ありがとうございます!
コンパイルが成功した空白のウィンドウを表示するプロジェクトにそのまま上書きする形で行いました。また、設定をし直した新規プロジェクト(ファイル→新規作成→プロジェクト→C++→WIN32コンソール…)で作成したものにも設定をしなおしてコンパイルしましたが同じ結果が出ました。
>#include <opencv\cv.h>
>#include <opencv\highgui.h>
>に変更、プリコンパイルヘッダは使用しないに設定してビルドすると……
※(1)
1>c:\users\ken\documents\visual studio 2010\projects\optical_flow\optical_flow\optical_flow.c++(9): error C3872: '0x3000': この文字を識別子で使用することはできません
1>c:\users\ken\documents\visual studio 2010\projects\optical_flow\optical_flow\optical_flow.c++(9): error C2065: ' IplImage' : 定義されていない識別子です。
※(1)下のようなエラーがひたすらに続きました。
直接的にcv.h、highgui.hを読み込めない。というようなメッセージは見当たりませんが、認識できていないのでしょうか?
また、
>ライブラリディレクトリにあるライブラリファイルを追加の依存ファイルに突っ込んでみました。
とある通りcmdで検索し、
opencv_calib3d220d.lib
opencv_contrib220d.lib
opencv_core220d.lib
opencv_features2d220d.lib
opencv_ffmpeg220d.lib
opencv_flann220d.lib
opencv_gpu220d.lib
opencv_highgui220d.lib
opencv_imgproc220d.lib
opencv_legacy220d.lib
opencv_ml220d.lib
opencv_objdetect220d.lib
opencv_video220d.lib
をプロジェクト→optical_flowのプロパティ→構成プロパティ→リンカー→入力→追加の依存ファイル
に追加しました。
が、依然状況が変わらず、※(1)のようなエラーメッセージが表示されます。
使用したopencvはWr5さんと変わらずOpenCV-2.2.0-win32-vs2010.exeです。
インストールした場所はcドライブ直下で、c:\opencv2.2となっています。ファイルの場所も合っているとは思うのですが…。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- WordPress(ワードプレス) httpからhttpsへのリダイレクト設定について 2 2022/04/17 09:49
- その他(プログラミング・Web制作) Visual StudioでDjangoのプロジェクト配下のappを作成する方法 1 2022/05/01 03:47
- その他(パソコン・スマホ・電化製品) Webページ印刷時にヘッダー・フッターをつけたい 1 2022/04/25 21:35
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
- モニター・ディスプレイ PCゲームで急にFPSが落ちました 2 2022/11/18 00:42
- ソフトウェア VisualStudio のデータブレークポイントを有効にする方法 1 2023/05/01 09:42
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
- Excel(エクセル) Excel複数シートから日付と文字を取り出して日付順に並べたいです 6 2022/06/06 13:23
- Visual Basic(VBA) visual basic初心者です。 visual studioで電卓を作成しています。 実行時にテ 1 2023/02/08 00:18
- 画像編集・動画編集・音楽編集 AfterEffectでのシャターの挙動がおかしい 1 2023/05/07 00:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
visual studio 2019 についての...
-
VB6.0を使用しています
-
Windows10 VisualStudioでMFC環...
-
VB6 exe作成時のアイコン変更方法
-
Visual studio2017で、2回目の...
-
DLL参照時に指定されたモジュー...
-
eclipseでデバックするとエラー...
-
Visual Studio 2017 ビルドする...
-
visual studio2019でデバッグが...
-
起動時に何のダイアログも表示...
-
Visual C++6.0 デバッグ中にグ...
-
VB6のデバッグ
-
VC++でSQL Serverに接続するに...
-
ダイアログなどの文字列が文字...
-
VB2005のソリューション内の共...
-
VC++6 EXEをDLLに変換
-
ASP.NET exeの作成方法
-
Eclipseのブレークポイントが○...
-
VC6 でのデバッグ時にブレーク...
-
VB6 ClassにてEnum(列挙型)の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
visual studio2019でデバッグが...
-
DLL参照時に指定されたモジュー...
-
eclipseでデバックするとエラー...
-
Visual studio2017で、2回目の...
-
デバッガでステップ実行してい...
-
起動時に何のダイアログも表示...
-
デバッグとビルドは何が違うの...
-
Eclipseのブレークポイントが○...
-
ソリューションをまたがるデバ...
-
VB.netを実行するとデバック プ...
-
visual studio 2019 についての...
-
visual studio 2008 のデバッグ...
-
vb ver6 でformat文やTrim文の...
-
vb2010にてASPWEBシステムを作...
-
VB6.0を使用しています
-
VC++でDeugモードOKで、Release...
-
VB6 exe作成時のアイコン変更方法
-
vbprojファイルが開けません
-
Visual Studio 2017 ビルドする...
-
ASP.NETでデバッグができない
おすすめ情報