※ ChatGPTを利用し、要約された質問です(原文:画像処理を簡単に扱えるということを知り、OpenCV2.1をインストー)
OpenCV2.1をインストール、サンプルプログラム実行後にエラーが発生しました
このQ&Aのポイント
画像処理を簡単に扱えるということを知り、OpenCV2.1をインストールしました。初心者向けのサイトを参考にしてインストールし、簡単なサンプルプログラムを実行しましたが、エラーが発生しました。
インストールと環境設定は正しく行いましたが、デバッグモードでプログラムを実行すると、「アプリケーションを正しく初期化できませんでした。(0xc0150002)」というエラーメッセージが表示されます。
エラーメッセージによると、Microsoft Visual C++ 2005 SP1 再頒布可能パッケージ (x86) のインストールが必要とのことですが、正常にインストールできているかわかりません。ダイアログが表示されてすぐに消えてしまい、プログラムの追加と削除の項目にはMicrosoft VisualC++ 2005 Redistributableがあるだけです。OSはWindowsXPです。解決策を教えてください。
画像処理を簡単に扱えるということを知り、OpenCV2.1をインストー
画像処理を簡単に扱えるということを知り、OpenCV2.1をインストールしました。
インストールは http://imagingsolution.blog107.fc2.com/blog-entry-207.html
のページの初心者向けの方を参考にしました。
本体のインストール後、Visual Studio 2005 のインクルードファイルとライブラリの設定を行いました。本体のインストール先をCドライブ直下にしたため、以下のパスを設定しました。
c:\OpenCV2.1\include\opencv
c:\OpenCV2.1\lib
また、環境変数のpathの部分に以下のパスを設定しました。
c:\OpenCV2.1\bin
設定後、簡単なサンプルプログラムを下記の簡単なサンプルプログラムを実行してみました。
画像を読み込み、それを表示するだけのものです。
---------------------------------------------------
#include "cv.h"
#include "highgui.h"
#ifdef _DEBUG
//Debugモードの場合
#pragma comment(lib,"cv210d.lib")
#pragma comment(lib,"cxcore210d.lib")
#pragma comment(lib,"cvaux210d.lib")
#pragma comment(lib,"highgui210d.lib")
#else
//Releaseモードの場合
#pragma comment(lib,"cv210.lib")
#pragma comment(lib,"cxcore210.lib")
#pragma comment(lib,"cvaux210.lib")
#pragma comment(lib,"highgui210.lib")
#endif
int main(int argc, char* argv[])
{
IplImage* img; // 画像ファイルポインタの宣言
char imgfile[] = "lena.jpg"; // 読み込み画像ファイル名
// 画像の読み込み
img = cvLoadImage(imgfile, CV_LOAD_IMAGE_COLOR);
// 画像の表示
cvNamedWindow ("lena", CV_WINDOW_AUTOSIZE);
cvShowImage ("lena", img);
cvWaitKey (0);
cvDestroyWindow("lena");
// 画像の解放
cvReleaseImage(&img);
return 0;
}
--------------------------------------------------
Debugモードのときにこのプログラムを実行すると以下のエラーが出ます。
「アプリケーションを正しく初期化できませんでした。(0xc0150002)」
binフォルダの中身を見てみたところ、それぞれのdllもちゃんとありました。
この症状の場合、Microsoft Visual C++ 2005 SP1 再頒布可能パッケージ (x86)
をインストールしてくださいとのことでしたが、正常にインストールできたか分からない状態です。
vcredist_x86.exeを起動してみると、「WindowsにMicrosoft VisualC++ 2005 Redistributable を設定しています。しばらくお待ちください。必要な情報を集めています。」というダイアログが30秒ほど出てから消えてしまうだけです。プログラムの追加と削除の項目を見てみたところ、Microsoft VisualC++ 2005 Redistributableというものがあったのでインストールできているものと思いたいですが…。仮にうまくインストールできていたとしても症状が改善されなくて困ってます。
私は正規品のvisualC++2005をインストールしたので、そもそもこのランタイムのインストールは必要ないような気もします…。
OSはWindowsXPです。コンピュータにあまり詳しくないので詳細の環境は何を書けばいいのかがよく分かりません。解決策よろしくお願いします。
補足
>・アプリケーションと同じフォルダにDLLを置く >・アプリケーションをbinフォルダにコピーする >・システムフォルダにそれらのDLLが置かれている >のどれかの状態になっていますか? 環境変数のpathの部分にbinフォルダを指定しているのでdllの読み込みは行われていると思います。 試しに上記の3点を行ってみましたがやはり駄目でした。 >Debugモードでコンパイル・リンクした時だけこのエラーが出てReleaseだと出ない >というような話だとこれは当てはまりませんが ご指摘のとおりDebugモードだけエラーがでるんですよね…。 最近OSを再インストールしたので何か足りないものがあるのかもです。 Windows Update をしてみましたが変化はなかったです。 cxcore210d.lib highgui210d.lib この2つの読み込みに対してアプリケーション初期化失敗のエラーが出てるようです。 cxcore210.lib highgui210.lib に変更してみたところエラーが消えましたので。