• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:画像処理を簡単に扱えるということを知り、OpenCV2.1をインストー)

OpenCV2.1をインストール、サンプルプログラム実行後にエラーが発生しました

このQ&Aのポイント
  • 画像処理を簡単に扱えるということを知り、OpenCV2.1をインストールしました。初心者向けのサイトを参考にしてインストールし、簡単なサンプルプログラムを実行しましたが、エラーが発生しました。
  • インストールと環境設定は正しく行いましたが、デバッグモードでプログラムを実行すると、「アプリケーションを正しく初期化できませんでした。(0xc0150002)」というエラーメッセージが表示されます。
  • エラーメッセージによると、Microsoft Visual C++ 2005 SP1 再頒布可能パッケージ (x86) のインストールが必要とのことですが、正常にインストールできているかわかりません。ダイアログが表示されてすぐに消えてしまい、プログラムの追加と削除の項目にはMicrosoft VisualC++ 2005 Redistributableがあるだけです。OSはWindowsXPです。解決策を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • koi1234
  • ベストアンサー率53% (1866/3459)
回答No.2

試したわけではありませんが >binフォルダの中身を見てみたところ、それぞれのdllもちゃんとありました。 ではなくて ・アプリケーションと同じフォルダにDLLを置く ・アプリケーションをbinフォルダにコピーする ・システムフォルダにそれらのDLLが置かれている のどれかの状態になっていますか? Dllをどのアプリからでも認識する為には Windowsのシステムフォルダ (XP なら Windows\System32 他のOSは余り使ってないので良く知りません) においておく必要があるはずです アプリケーションとDLLの設置場所がまともな関係にない (置いておかないといけない場所にない)為エラーを起こしているのではないでしょうか? Debugモードでコンパイル・リンクした時だけこのエラーが出てReleaseだと出ない というような話だとこれは当てはまりませんが

take8793
質問者

補足

>・アプリケーションと同じフォルダにDLLを置く >・アプリケーションをbinフォルダにコピーする >・システムフォルダにそれらのDLLが置かれている >のどれかの状態になっていますか? 環境変数のpathの部分にbinフォルダを指定しているのでdllの読み込みは行われていると思います。 試しに上記の3点を行ってみましたがやはり駄目でした。 >Debugモードでコンパイル・リンクした時だけこのエラーが出てReleaseだと出ない >というような話だとこれは当てはまりませんが ご指摘のとおりDebugモードだけエラーがでるんですよね…。 最近OSを再インストールしたので何か足りないものがあるのかもです。 Windows Update をしてみましたが変化はなかったです。 cxcore210d.lib highgui210d.lib この2つの読み込みに対してアプリケーション初期化失敗のエラーが出てるようです。 cxcore210.lib highgui210.lib に変更してみたところエラーが消えましたので。

その他の回答 (5)

回答No.6

そうですか。 試して頂いた設定であっているようなので、これでダメだと私にはお手上げです... (プロジェクトの*.libや*.hのパスの設定とかだとは思うのですが。) ただ、Releaseモードだけは動いていると言う事なので、それが救いですね。

take8793
質問者

お礼

そうですね。 丁寧に答えて頂きありがとうございました。 OpenCVの勉強をしばらくしていきたいと思います。

回答No.5

補足です。 プロジェクトのプロパティでlibのパスの設定などはご存知なようなので、参照ページにあるように#pragma commentを使わずにプロジェクトのプロパティでlibの設定をしてみては如何でしょうか? ただし、参照URLでは構成を『全ての構成』で設定していますが、今回はDebugとReleaseを分けてそれぞれのlibファイルを設定してみて下さい。

参考URL:
http://imagingsolution.blog107.fc2.com/blog-entry-134.html
take8793
質問者

お礼

プロジェクト → プロパティ → リンカ → 入力 → 追加の依存ファイル にlibを設定するという認識でいいでしょうか? Debugモード "cv210d.lib" "cxcore210d.lib" "cvaux210d.lib" "highgui210d.lib" Releaseモード "cv210.lib" "cxcore210.lib" "cvaux210.lib" "highgui210.lib" を追加、#pragmaの部分のソースを削除して実行しましたが、以前と変わらずでした; 絶対パス(c:\\OpenCV2.1\\lib\\cv210d.libなど)も試してみましたがダメでした。

回答No.4

Debugモードだけでエラーが出るということは、ReleaseとDebugの切り分けができていない訳ですね? ちなみに、DebugとReleaseの設定を別々に行わないと、例えばcv:imreadのようなcvという名前空間の関数を使う場合は、おそらくうまく動作してくれません。(少なくともVer2.0ではそうでした。) ということで確認ですが、VisualStudio2005ではDebugモードとReleaseモードを切り替えると、#ifdefの内側の文字色(#pragma commentの文字色)がDebugとReleaseでグレーになったりならなかったり切り替わると思いますが、切り替わっていますでしょうか? もし、切り替わらなければ、プロジェクトのプロパティで左上の構成で『Debug』を選択した状態で、構成のプロパティ→C/C++→プリプロセッサの『プリプロセッサの定義』の部分で『_DEBUG』は設定されていますでしょうか? 通常はこの欄は『WIN32;_DEBUG;_CONSOLE』とかになっていると思います。

take8793
質問者

補足

>ということで確認ですが、VisualStudio2005ではDebugモードとReleaseモードを切り替えると、 >#ifdefの内側の文字色(#pragma commentの文字色)がDebugとReleaseでグレーになったりならなか >ったり切り替わると思いますが、切り替わっていますでしょうか? それぞれのモードで実行してみました。Debugモード時ではReleaseのほうのソースが、Releaseモード時ではDebugのほうのソースがグレーになっています。 >通常はこの欄は『WIN32;_DEBUG;_CONSOLE』とかになっていると思います。 確認してみたところそのようになっておりました。

  • koi1234
  • ベストアンサー率53% (1866/3459)
回答No.3

>cxcore210d.lib >highgui210d.lib >この2つの読み込みに対してアプリケーション初期化失敗のエラーが出てるようです。 >cxcore210.lib >highgui210.lib >に変更してみたところエラーが消えましたので。 後ろ向き名考えになってしまいますが エラーが消えて動くのであれば(動かないのであれば話は別です) OpenCV のライブラリは全てRelease版を使ってしまって かまわないのではないかと思います(あくまで後ろ向き発想) 探したら同じような内容がありました http://d.hatena.ne.jp/garnetgimlet/20100513/1273679808 OpenCVライブラリの方を再構築でも直りそうです

take8793
質問者

お礼

>後ろ向き名考えになってしまいますが >エラーが消えて動くのであれば(動かないのであれば話は別です) >OpenCV のライブラリは全てRelease版を使ってしまって >かまわないのではないかと思います(あくまで後ろ向き発想) 確かにいくつかサンプルプログラムを実行してみましたが、releaseモードでは普通に起動することができています。私自身初心者ということもありまして、debugモード用のライブラリとの違いも分かりませんし、画像処理を楽しむことができているのでこれでいいような気もしております。 >探したら同じような内容がありました >http://d.hatena.ne.jp/garnetgimlet/20100513/1273679808 >OpenCVライブラリの方を再構築でも直りそうです ImagingSolさんも言われていたように原因はバージョン違いということにありそうですね。 お二人のアドバイス等を参考に自分なりにかなり調べたつもりですがうまくいきませんので、 現状はReleaseモードで動かしていこうと思います。

回答No.1

エラーメッセージを見る限り、確かにC++のランタイムのような気がします。 今回、お使いのOpenCVはVS2008でビルドされたものだと思うので、Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x86)をインストールするとどうでしょうか? 私の環境ではVS2008C++Expressも入れているのですが、VS2005C++でも動作してくれました。

take8793
質問者

補足

>今回、お使いのOpenCVはVS2008でビルドされたものだと思うので、Microsoft Visual C++ 2008 >SP1 再頒布可能パッケージ (x86)をインストールするとどうでしょうか? 2008でビルドされたものであることは知りませんでした。 さっそくMicrosoft Visual C++ 2008 SP1 再頒布可能パッケージ (x86)をインストールしました。 パソコンを再起動し、あるソリューションを実行したところ、「visual studioの初期設定をしています。数分間お待ちください。」というようなメッセージが出たため期待したのですが状況は改善されず、 「アプリケーションを正しく初期化することができませんでした。」とエラーメッセージが出ました。 プログラムの追加と削除の欄では、 (1) Microsoft Visual C++ 2008 Redistributable -x86 9.0.30729 が今回のインストールにより追加されているようですが合っているでしょうか? 他には、visual studioの本体が (2) Microsoft Visual Studio 2005 Academic Edition - 日本語 関連のありそうなものとして (3) Microsoft Visual C++ 2005 ATL Update kb973923 x86 8.0.50727.4053 が既にインストールされています。 (3)は2005のUpdateみたいなので消してしまったほうがいいんでしょうか? また、(1)をインストール完了した際に 「Microsoft Visual C++ 2008 Redistributable が正常にインストールされました。 この製品用の最新のService Pack およびセキュリティ更新プログラムをダウンロードしてインストールすることを強くお勧めします。」 と言われたのですが何か必要なものがあるのでしょうか?

関連するQ&A

専門家に質問してみよう