C++でOpenCVコンパイルエラー解決方法

このQ&Aのポイント
  • C++でOpenCVを使おうとしているが、コンパイルでエラーが発生している。
  • エラーメッセージは「fatal error C1083: include ファイルを開けません。'opencv2/core/core_c.h': No such file or directory」。
  • 解決方法を教えてほしい。
回答を見る
  • ベストアンサー

C++でOpenCV コンパイルでエラー

超初心者です。 Visual C++2010 ExpressでOpenCVを使おうとしています。 このページを参考にしています。 http://gihyo.jp/dev/feature/01/opencv/0002?page=2 プログラムは以下の通り。 #include <C:\Program Files (x86)\opencv\build\include\opencv\cv.h> #include <C:\Program Files (x86)\opencv\build\include\opencv\highgui.h> 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; } コンパイルすると、以下のエラーメッセージが出ます。 1>------ ビルド開始: プロジェクト: try, 構成: Debug Win32 ------ 1> try.cpp 1>c:\program files (x86)\opencv\build\include\opencv\cv.h(63): fatal error C1083: include ファイルを開けません。'opencv2/core/core_c.h': No such file or directory ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ========== どのようにすれば通るのでしょうか? 教えてください。よろしくお願いします。

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

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

> この連載では,以下のような開発環境をベースに解説を行っていきます。 > バージョン:OpenCV 1.0 > OS:Winodows XP > IDE:Microsoft Visual C++ 2005 現在、OpenCVは2.xになっています。 ディレクリ構造が1.xのころから少し変っています。 2.x用に書かれた資料を探すか、自分で修正できる程度にC/C++言語の知識を深めるかしましょう。 私としては後者をお勧めしたいところです。

chocolat-nya
質問者

お礼

回答ありがとうございます! Cは大学時代にやっていたのですが、なんせ何十年も前のことなので、すっかり抜けてしまいました。 がんばって復習したいと思います。

その他の回答 (1)

  • mk48a
  • ベストアンサー率56% (1133/2007)
回答No.1

えっと、普通はインクルードファイルをフルパスで指定しません。 プロジェクトにインクルードファイルのパスを設定し、そこからの相対パスを指定します。 たぶん、インクルードファイルのルートパスが設定されていないので、インクルードしているファイルが参照しているヘッダーファイルを見つけられないのだと思います。 --->引用 「構成」で「すべての構成」を選択し,左側のツリーから「C/C++」タブを選択し,「追加のインクルードディレクトリ」にインストールしたOpenCVのホームディレクトリの下の以下のディレクトリを追加します。 <---ここまで ページの最初の方に書いてあるこれはやっていますか?

chocolat-nya
質問者

補足

回答ありがとうございます! 最初はフルパスではなく、参考ページままでやってみたのですが、こんなエラーメッセージが。 1>------ ビルド開始: プロジェクト: try, 構成: Debug Win32 ------ 1> try.cpp 1>c:\program files (x86)\opencv\try\try.cpp(1): fatal error C1083: include ファイルを開けません。'cv.h': No such file or directory ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ========== なので、試しにフルパスにしてみた次第です。 ご指摘の引用部はやってみました。ただ、「以下のディレクトリ」(cxcore\include, cv\include, otherlibs\highgui, cvaux\include.)が実際にはないんですけど、ここは臨機応変にディレクトリ名を変えないといけないのですかね? 超初心者の質問に付き合って頂いて、大変ありがたいです。 ありがとうございます!

関連するQ&A

  • Opencvで質問

     Opencv初心者です。  今日opencvとVC++2010を設定して今練習中なのですが   #include <stdexcept>   #include <opencv/cv.h>   #include <opencv/highgui.h>   int main (int argc, char* argv[]){   const char *fileName = "C:\\Program Files\\OpenCV2.3.1\\samples\\c\\lena.jpg";   const char *windowName = "lena";   ::IplImage* img = ::cvLoadImage(fileName);   ::cvNamedWindow(windowName);   ::cvShowImage(windowName,img);   ::cvWaitKey();   ::cvDestroyWindow(windowName);   ::cvReleaseImage(&img);   }  と言うサンプルをビルドしたら  1>------ ビルド開始: プロジェクト: 画像処理練習, 構成: Debug Win32 ------  1>LINK : fatal error LNK1104: ファイル 'opencv_core231.lib' を開くことができません。  ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========  エラーが出てしまい先に進めません。  もしかしたら他に設定が悪いのでしょうか?  インストールもC:\Program Files\OpenCV2.3.1に名前も変えインストールしました。  ttp://shiotani.cn/20110904vc2010opencv.html  ここを参考にさせていただきました。 よろしくお願いします。

  • ビルドエラー(C1083)について

    c++初心者です。 先日学校の課題用に配布された画像処理プログラム(C++)を実行しようとしたのですが、 ビルドエラーが出てしまい、色々調べてみたのですが解決法がわかりません。 エラーの内容は、 fatal error C1083: include ファイルを開けません。'cv.h': No such file or directory というものです。 使用しているのは Microsoft visual c++ 2008 express edition OpenCV です。 また、インクルードファイルには ・C:\Program Files\OpenCV\cv\include C:\Program Files\OpenCV\cvaux\include C:\Program Files\OpenCV\cxcore\include C:\Program Files\OpenCV\ml\include C:\Program Files\OpenCV\otherlibs\highgui ライブラリファイルには ・C:\Program Files\OpenCV\lib を追加し、pathにも ;C:\Program Files\OpenCV\bin\ が追加してあります。 プログラム上の問題ではなく申し訳ないのですが、よろしくお願いします。 OSはvistaです。

  • OpenCVについて

    OpenCVについて OpenCVをインストールしたのですが、設定もちゃんとしたと思います。 インクルードファイルには C:\Program Files\OpenCV\cv\include C:\Program Files\OpenCV\cxcore\include C:\Program Files\OpenCV\cvaux\include C:\Program Files\OpenCV\otherlibs\highgui ライブラリファイルには C:\Program Files\OpenCV\bin C:\Program Files\OpenCV\lib を入れています。 したのですが、 fatal error C1083: include ファイルを開けません。'cxcore.h': No such file or directoryというエラーが出て実行できません。 どうしたら実行できるんでしょうか?

  • OpenCV2.3 のエラー

    Open CV2.3をVisual Studio2013 expresssに設定しました。 が、プログラムを実行すると 「エラー 3 error LNK1107: ファイルが無効であるか、または壊れています: 0x10B000 を読み取れません。 C:\Program Files\opencv\build\x64\vc10\staticlib\IlmImf.pdb...」 と表示されてしまい、困っています。 エラー原因は[リンカー]-[入力]-[追加の依存ファイル]の設定でしょうか。 当初、libとstaticlibフォルダの中にある、拡張子pbdを含む、重複なしのすべてのファイルを[追加の依存ファイル]に設定していましたが、これがエラーの原因かと思い、 libとstaticlibフォルダ内の、拡張子libのみに修正しました。 が、同じエラーが依然として出ています。 プログラムは以下の内容で、単純に画像を表示させるだけのものです。 ============================================= #include <cxcore.h> #include <cv.h> #include <highgui.h> int _tmain(int argc) { IplImage *src_img = 0, *dst_img; // (1)画像を読み込む src_img = cvLoadImage("C\\Users\\...\\thNDM091S8.jpg", CV_LOAD_IMAGE_COLOR); // (6)画像の表示 cvNamedWindow("Fitting", CV_WINDOW_AUTOSIZE); cvShowImage("Fitting", src_img); cvWaitKey(0); cvDestroyWindow("Fitting"); cvReleaseImage(&src_img); return 0; } ============================================== どこを直せばいいでしょうか。 いろいろと調べましたがわかりませんので、教えていただけると助かります。 よろしくお願いいたします。

  • OpenCVのリンクエラー

    Windows XP, Visual C++ 6.0の環境でOpenCVを始めました。OpenCVに含まれるサンプルのビルドにおいて「kalman.obj : error LNK2001: 外部シンボル "_cvDestroyWindow" は未解決です」等のエラーが発生します。初歩的な問題で申し訳ありませんが解決法を教えて下さい。尚、Visual C++のツール->オプション->ディレクトリには以下を加えております。 インクルード C:\Program Files\OpenCV\cv\include C:\Program Files\OpenCV\cxcore\include C:\Program Files\OpenCV\CVAUX\INCLUDE C:\Program Files\OpenCV\OTHERLIBS\CVCAM\INCLUDE C:\Program Files\OpenCV\otherlibs\highgui ライブラリ C:\Program Files\OpenCV\lib C:\Program Files\OpenCV\otherlibs\highgui

  • 画像処理を簡単に扱えるということを知り、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です。コンピュータにあまり詳しくないので詳細の環境は何を書けばいいのかがよく分かりません。解決策よろしくお願いします。

  • Visual C++,OpenCVでのリンクエラー

    こんにちは。 現在、Microsoft Visual C++ 2010 の環境で、OpenCV(ver2.3.1)を用いて、画像認識のアプリケーションを作ろうと考えています。ただ、Visual C++ 、OpenCV共に扱うのが初めてで、openCVのライブラリーをC++に認識させることができていません。 具体的には、下記の様なエラーが出ます。 「 Sample.obj : error LNK2019: 未解決の外部シンボル _cvReleaseImage が関数 _wmain で参照されました。 (同様に、以下の外部シンボルも参照できていません。_cvDestroyAllWindows、_cvWaitKey、_cvShowImage、_cvSmooth、_cvCreateImage、_cvGetSize、_cvNamedWindow、_cvLoadImage) 」 リンクの設定が上手くできていないと考え、 プロジェクト > ○○のプロパティ > 構成プロパティ > リンカー > 全般 > 追加ライブラリディレクトリ に、C:\opencv\build\x64\vc10\lib というように記入し(64bit環境です)、また、 プロジェクト > ○○のプロパティ > 構成プロパティ > リンカー > 入力 > 追加依存ファイル に、opencv_core231d.lib;opencv_imgproc231d.lib;opencv_highgui231d.lib;opencv_objdetect231d.lib;opencv_contrib231d.lib;opencv_features2d231d.lib;opencv_flann231d.lib;opencv_gpu231d.lib;opencv_haartraining_engined.lib;opencv_legacy231d.lib;opencv_ts231d.lib;opencv_video231d.lib を追加しております。 実行しているサンプルファイルは下記になります。 -------------------- // Sample.cpp : コンソール アプリケーションのエントリ ポイントを定義します。 // #include "stdafx.h" //プロジェクトのプロパティ⇒C/C++⇒全般 の追加のインクルードディレクトリに // 『C:\OpenCV2.3\include』を追加のこと #include "opencv2\\opencv.hpp" #ifdef _DEBUG //Debugモードの場合 #pragma comment(lib,"C:\\opencv\\build\\x64\\vc10\\lib\\opencv_core231d.lib") #pragma comment(lib,"C:\\opencv\\build\\x64\\vc10\\lib\\opencv_imgproc231d.lib") #pragma comment(lib,"C:\\opencv\\build\\x64\\vc10\\lib\\opencv_highgui231d.lib") #pragma comment(lib,"C:\\opencv\\build\\x64\\vc10\\lib\\opencv_objdetect231d.lib") #pragma comment(lib,"C:\\opencv\\build\\x64\\vc10\\lib\\opencv_contrib231d.lib") #pragma comment(lib,"C:\\opencv\\build\\x64\\vc10\\lib\\opencv_features2d231d.lib") #pragma comment(lib,"C:\\opencv\\build\\x64\\vc10\\lib\\opencv_flann231d.lib") #pragma comment(lib,"C:\\opencv\\build\\x64\\vc10\\lib\\opencv_gpu231d.lib") #pragma comment(lib,"C:\\opencv\\build\\x64\\vc10\\lib\\opencv_haartraining_engined.lib") #pragma comment(lib,"C:\\opencv\\build\\x64\\vc10\\lib\\opencv_legacy231d.lib") #pragma comment(lib,"C:\\opencv\\build\\x64\\vc10\\lib\\opencv_ts231d.lib") #pragma comment(lib,"C:\\opencv\\build\\x64\\vc10\\lib\\opencv_video231d.lib") #else //Releaseモードの場合 #pragma comment(lib,"C:\\opencv\\build\\x64\\vc10\\lib\\opencv_core231.lib") #pragma comment(lib,"C:\\opencv\\build\\x64\\vc10\\lib\\opencv_imgproc231.lib") #pragma comment(lib,"C:\\opencv\\build\\x64\\vc10\\lib\\opencv_highgui231.lib") #pragma comment(lib,"C:\\opencv\\build\\x64\\vc10\\lib\\opencv_objdetect231.lib") #pragma comment(lib,"C:\\opencv\\build\\x64\\vc10\\lib\\opencv_contrib231.lib") #pragma comment(lib,"C:\\opencv\\build\\x64\\vc10\\lib\\opencv_features2d231.lib") #pragma comment(lib,"C:\\opencv\\build\\x64\\vc10\\lib\\opencv_flann231.lib") #pragma comment(lib,"C:\\opencv\\build\\x64\\vc10\\lib\\opencv_gpu231.lib") #pragma comment(lib,"C:\\opencv\\build\\x64\\vc10\\lib\\opencv_haartraining_engined.lib") #pragma comment(lib,"C:\\opencv\\build\\x64\\vc10\\lib\\opencv_legacy231.lib") #pragma comment(lib,"C:\\opencv\\build\\x64\\vc10\\lib\\opencv_ts231.lib") #pragma comment(lib,"C:\\opencv\\build\\x64\\vc10\\lib\\opencv_video231.lib") #endif int _tmain(int argc, _TCHAR* argv[]) { //画像データの読込 IplImage* src_img = cvLoadImage("C:\\opencv\\samples\\c\\lena.jpg", CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR); if (src_img == NULL){ return 0; } //表示ウィンドウの作成 cvNamedWindow("src"); cvNamedWindow("dst"); //処理後画像データの確保 IplImage* dst_img = cvCreateImage(cvGetSize(src_img), src_img->depth, src_img->nChannels); //画像処理例(ガウシアンフィルタ) cvSmooth(src_img, dst_img, CV_GAUSSIAN, 9); //画像の表示 cvShowImage ("src", src_img); cvShowImage ("dst", dst_img); //キー入力待ち cvWaitKey (0); //全てのウィンドウの削除 cvDestroyAllWindows(); //画像データの解放 cvReleaseImage(&src_img); cvReleaseImage(&dst_img); return 0; } --------------- 初心者な質問で大変恐縮ながら、どこを修正すればよいかお分かりでしたら、お教え頂けませんでしょうか?何卒宜しくお願いします。

  • OpenCVをC++2010で使おうとしてます。

    OpenCVをC++2010で使おうとしてます。しかし以下のようなエラーで上手く成功しません 1>------ ビルド開始: プロジェクト: image, 構成: Debug Win32 ------ 1> image.cpp 1>c:\users\moeru\documents\visual studio 2010\projects\image\image\image.cpp(8): fatal error C1083: include ファイルを開けません。'highgui.h': No such file or directory ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ========== パソコンはソニーのバイオで、windows7です。 参考文献はOpenCVプログラミングブック第2版。 インクルードファイルのディレクトリの設定は。 C:\Program Files\OpenCV\cv\include C:\Program Files\OpenCV\cvaux\include C:\Program Files\OpenCV\cxcore\include C:\Program Files\OpenCV\otherlibs\highgui ライブラリの方の設定は C:\Program Files\OpenCV\lib プロジェクト作成は win32→[win32プロジェクト]を選択しファイル名をimageにしました。 アプリケーション設定では追加のオプションの[空のプロジェクト(E)]にチェックマークをして完了しました。 次にプロジェクトの静的ライブラリの設定で、[構成プロパティ]→[リンカ]→[入力]と進み 追加の依存ファイルに ;highgui.lib;cxts.lib;cv.lib;cxcore.lib;ml.lib;cvaux.lib;cvhaartraining.lib と入力しました。 ソースコード生成で、ソリューションエクスプローラー→ソースファイルを右クリック→追加→新しい項目→visualC++→コード→C++ファイル(.cpp)を選択し、ファイル名をimageにしました。 そのまま本のあるサンプルプログラムをダウンロードし貼り付けをしてデバックしました。 以上の手順で何か間違っているところはありますか? 本にある内容をそのまま実行しましたが上手くいきません。PCやプログラミングも大変初心者でわからないこと沢山ありますが、どなたかご教授をおねがいします。

  • OpenCVの実行エラー

    OpenCVで下記の用なテストプログラムを作成しました。 --------------------------------------- #include <stdio.h> #include <cv.h> #include <cxcore.h> #include <highgui.h> #pragma comment(lib, "cv.lib") #pragma comment(lib, "cxcore.lib") #pragma comment(lib, "highgui.lib") int main(void) { unsigned char *Image; IplImage* img = NULL; IplImage* clone = NULL; // 画像読み込み img = cvLoadImage("image.bmp", -1); // 画像コピー clone = cvCloneImage(img); return 0; } --------------------------------------- ところが、実行すると --------------------------------------- Bad argument(Bad image header) in function cvCloneImage, D:\User\VP\openCV\cxcore\src\cxarray.cpp --------------------------------------- というエラーメッセージがでて実行することができませんでした。 OpenCVに付属していたsampleプログラムは動作しました。 // 画像コピー clone = cvCloneImage(img); の一文をコメントアウトするとエラーはなぜかでません。 このエラーはどうしてでるのでしょうか? OSはwindowsXP コンパイルはC++6.0とVS2005の両方で試しましたが同じ結果がでます。

  •  OpenCV2.1.0でのコンパイルエラーについて、質問があります。

     OpenCV2.1.0でのコンパイルエラーについて、質問があります。  初心者で至らない点があるかと思いますが、ぜひ回答よろしくお願いします。  動画キャプチャを再生するプログラムを作ろうと、DirectXを利用しています。  (Visual C++ 2010 expressを使っています)  インクルードファイルでの<cv.h>や<dshow.h>は、Microsofot windows SDK 6.1  やOpenCv2.1.0をインストールして、VC++ディレクトリ中の   インクルードファイル(*.h)は    c:\OpenCV2.1\include\opencv   ラ イブラリファイル(*.lib)は    c:\OpenCV2.1\lib   ダイナミックリンクライブラリ ファイル(*.dll)は    c:\OpenCV2.1\bin  (これは、”実行可能なファイル"のところへ)  設定して、コンパイルエラーは出ないようになりました。  しかし、   「インクルードファイル(*.h)は  c:\OpenCV2.1\include\opencv」  の処置のおかげで、同一フォルダに入っている   「cxtypes.h」と「cxoperations.hpp」の二つで、下記のようなコンパイルエラーが出ます。   エラーメッセージ > error C3862: /clr:pure または /clr:safe を伴うアンマネージ関数を   コンパイルできません  インラインのネイティブ アセンブリはマネージ コードで   サポートされていません >error C3645: : __clrcall は、ネイティブ コードにコンパイルされた関数  では使用できません  上のエラーから、clrの問題と考えて、.NET .Freamework 4.0(x68)を  新しくインストールしましたが、上のエラーが解決せず、コンパイルできません。  VC++ディレクトリ中のリンカーは、     strmiids.lib     cv.lib     cxcore.lib     highgui.lib     dxerr.lib     dxguid.lib     d3dx9.lib     d3dx10.lib     d3d9.lib     winmm.lib     comctl32.lib     strmbase.lib  にしました。  コンパイルエラーを解決する方法をご教示くださると、大変幸いです。  よろしくお願いします。

専門家に質問してみよう