Borland C BuilderでOpenCVを使用しようとして

このQ&Aのポイント
  • Borland C BuilderでOpenCVを使用しようとしています。開発環境はW.XPです。OpenCVはV1.0を使用しています。
  • サンプルプログラムの一部はコンパイルし実行することができましたが、他のプログラムではリンカーエラーが発生し、未解決の外部シンボルがあります。
  • CHFファイルに関する情報や解決法を探しても見つけられず困っています。Borland C BuilderでOpenCVを使用する方法を教えてください。
回答を見る
  • ベストアンサー

Borland C Builder で OpenCVを使用しようとして

Borland C Builder で OpenCVを使用しようとしています。 開発環境は W.XPです。 OpenCVはV1.0を使用しています。 http://sourceforge.net/projects/opencvlibrary/ のVews all filesからOpencv-winの1.0のフォルダーをDLして検討しています。 ようやくサンプルプログラムをコンパイル、実行出来る状態になりました。 このフォルダー内のサンプルプログラムの内、2つはコンパイルし実行する事が出来ました。 その他のサンプルプログラムですが、例えばサンプルのs22のtutorial_02.cppをコンパイルすると、リンカーエラー 外部シンボル_cvCreateImageが未解決です・・・が出ます。 DLしたLibフォルダーの中を見ると色々なファイルがあり、同名のファイルもありますが、拡張子がchfと成っています。 試しにこのファイルをそのままリンクしてみましたが、解決しませんでした。 多分、このファイルの拡張子がlibのものがあればリンク出来ると思うのですが、ネットでCHFファイルを検索しても、Change Font File位しかヒットしません。 この辺お分かりに成る方居られましたら解決法をお教え下さい。 よろしくお願い致します。

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

  • ベストアンサー
  • hidebun
  • ベストアンサー率50% (92/181)
回答No.1

あの…リンクエラーの意味わかってます? 確か全社的に、導入するための検証とおっしゃられていましたが、 老婆心ながら、もう少し適任な方がいらっしゃるんじゃないでしょうか。 #プログラミング未経験者ですか? リンクエラーは、関数の実体を参照しようとして、それがないから出るのです。 それが定義されているライブラリを探すことが必要であって、山勘でわけのわからない CHFファイルとかを指定しても、エラーが解消されるわけはありません。 cvCreateImageというと、cxcoreモジュールの中で定義されているようですから、 cxcore.libをリンクしないと解決しないと思います。 それから、tutorial_02.cppはいったいどれをダウンロードしたら入っているんでしょうか? opencv-win/1.0/OpenCV.exeとchopencv-2.5.0-win-binary.zip には少なくとも入っていませんでした。

TinyPine
質問者

お礼

度々のご回答ありがとうございます。 本件、昨晩解決し、今朝、質問を削除しようとしていた所です。 あの…リンクエラーの意味わかってます? 確か全社的に、導入するための検証とおっしゃられていましたが、 老婆心ながら、もう少し適任な方がいらっしゃるんじゃないでしょうか。 >#プログラミング未経験者ですか? 一応、すべてある程度理解しているつもりです。確かに適任で無い事は分かっていますが、現状、私がやらないと成らない状態で、ましてや外注を使う事等コスト的に無理な状態です。 >リンクエラーは、関数の実体を参照しようとして、それがないから出るのです。 それが定義されているライブラリを探すことが必要であって、山勘でわけのわからない CHFファイルとかを指定しても、エラーが解消されるわけはありません。 このCHFファイルに関しても、やっとインタープリター型の処理に使うとの記事を見つけ、今回の検討の対象から外しました。 >cvCreateImageというと、cxcoreモジュールの中で定義されているようですから、 cxcore.libをリンクしないと解決しないと思います。 今回のエラーの原因はここで、cxcore.libをリンクしていた積りが、実際にはリンクされて居なかった様です。今回、色々な検討をする為に、libフォルダー内にCV用のフォルダーを作成し、そこにcv関係のlibを入れてパスを設定していたのですが(つもり)、直接すべてプロジェクトに取り込んだ所、動作しました。パスの設定ミスなのか、本来プロジェクトに記載しなければ成らなかったものなのかはこれから調べてみます。 >それから、tutorial_02.cppはいったいどれをダウンロードしたら入っているんでしょうか? opencv-win/1.0/OpenCV.exeとchopencv-2.5.0-win-binary.zip には少なくとも入っていませんでした。 これは以下のURLのcv_prog.zipの中から拾って来ました。その点では質問文は正しくありませんでした。色々な所から情報を集めた為、自分自身でも混乱していました。失礼しました。 従ってこのサンプルもV1.0用のものかは分からなくなりました。現実にこのサンプルのうち、4プログラムに関してはコンパイル、及び実行出来ていますが、残りのサンプルについては同じエラーが発生していますので、これからV1.0に書かれているサンプルのみで動作確認してみます。 http://book.mycom.co.jp/support/bookmook/opencv/ 色々、ありがとう御座いました。

関連するQ&A

  • Borland C Builder とOpenCVをリンクしたい。

    Borland C Builder とOpenCVをリンクしたい。 Borland C Builder V5でOpenCV V2.1.0を使おうとこの1週間試行錯誤していますが、やり方がわかりません。 http://opencv.jp/opencv2-x-tips/install-on-windowswindows32bit-64bit-visual-studio-opencv21 に書かれている通りにOpenCV-2.1.0-win32-vs2008.exeをDLしてCMAKEを実行させたのですが、Build内のbinやlibには何も生成されません。 OpenCV-2.0.0a-win32.exeも試しましたが同様です。 CMAKEはやはりマニュアル通りにソースはc:\OpenCV2.0 ビルドはc:\OpenCV2.0\Buildとし、Configure、ビルドフォルダー作成Yes、Borland Make Fileを選択してパスはdefault native computerにし、Configure、赤表示が出てConfiguring doneが出た後再度Configgure、Generateと操作していますが、結果のBuild内のbinやlibフォルダーには何も出力されませんし。 このCMAKEと言うのを使用するのは初めてで、使い方は分からないのでマニュアルどおり(と思っている方法)で行っています。 系列は違いますが、OpenGLの方はBorland C Builderとリンク出来、サンプルプログラムの実行も成功しております。 今回、OpenCVを使う必要があり、何方か私の操作ミスお分かりの方が居られましたら正しい方法をお教え下さい。 よろしくお願い致します。

  • OpenCVを Borland C++ Builder で使いたいので

    OpenCVを Borland C++ Builder で使いたいのですが、やり方がわかりません。 実際にOpenCVをBorlend C++ Builderに結合出来た方の回答をお願い致します。 ネットを検索してみたのですが、OpenCV V1 V2.0 V2.1の記事がごっちゃに成っていて、かつVisual Studioの記事が多く、Borlandの記事が余り見つからず、見つかってもOpenCV V1のものです。 出来れば最新の物を使用したいので、OpenCV 2.1を結合しようと思っています。 http://opencv.jp/opencv2-x-tips/install-on-windowswindows32bit-64bit-visual-studio-opencv21に書かれている通りにOpenCV-2.1.0-win32-vs2008.exeをDLしてCMAKEをBuildMakefilesを選択して Use default native compilersのラジオボタン実行すると、指定フォルダーに色々ファイルが作成されますが、これらを更にどのように加工して行けばBorland C++ builder用のBin h 等のファイルが作成されるのでしょうか。 CMAKE実行後のBuildフォルダー内のbin、libフォルダー内は空でした。 マニュアルによるとVisual Studioの時はOpenCV.slnが作られる事に成っていますが、BuildMakefilesを選択して実行後、*.sinで検索して見ましたが何も見つかりませんでした。 やり方をご存知の方、お教え下さい。 よろしくお願い致します。む

  • OpenCVを Borland C++ Builder で使いたいので

    OpenCVを Borland C++ Builder で使いたいのですが、やり方がわかりません。 当方の環境はW.XP Borland c++ Builder V5です。 ネットを検索してみたのですが、OpenCV V1 V2.0 V2.1の記事がごっちゃに成っていて、かつVisual Studioの記事が多く、Borlandの記事が余り見つからず、見つかってもOpenCV V1のものです。 出来れば最新の物を使用したいので、OpenCV 2.1を結合しようと思っています。 http://opencv.jp/opencv2-x-tips/install-on-windo … に書かれている通りにOpenCV-2.1.0-win32-vs2008.exeをDLしてCMAKEをBuildMakefilesを選択して Use default native compilersのラジオボタン実行すると、指定フォルダーに色々ファイルが作成されますが、これらを更にどのように加工して行けばBorland C++ builder用のBin h 等のファイルが作成されるのでしょうか。 マニュアルによるとVisual Studioの時はOpenCV.slnが作られる事に成っていますが、BuildMakefilesを選択して*.sinで検索して見ましたが何も見つかりませんでした。 やり方をご存知の方、お教え下さい。 ただ、申し訳ありませんが、私が混乱しておりますので、実際にBuilderで実行された方のご回答をお願い致します。 よろしくお願い致します。

  • C++Builder XE とOpenCV

    長年C++Builderでプログラムを書いていますが、いつも全体をコピーして必要な所を変更しているので、開発環境の作成には自信の無い者です。 背景 昨年来、OpenCVとDirect-Xでカメラと画像のプログラムを開発していました。 今年2月にC++ Builder V5 とOpenCV V1.0 Direct-X9 で目的の動作をするものが完成しました。 W.2000とW.XPが対象ならばこれで良いのですが、世の中のOSがW.7に移っており、古いOSのPCの販売も無くなって来ている所から、W.7への乗せ替えを計画しました。 なお、OpenCV V1.0を使用しているのは、OpenCVでの開発開始当時、V2も試したのですが、V1.0でしかうまくコンパイル出来なかった為です。 問題点 新しい開発環境はOS W.7にC++Builder XEを搭載しました。 Builder V5に比べ、XEは文字コードがUniCodeに成っている等、文法エラーが多発していましたが、やっと文法エラーが無くなり、コンパイルが終了しました。 ここで実行させようとした所、cvhaartraining.dll がありませんとのメッセージが表示されてしまいました。 このメッセージはW.XP と C++Builder V5でコンパイル、実行させた時には出なかったものです。 更に、ダウンロードしたOpenCV1.0にはcvhaartraining.dllが含まれて居ませんでした。 ただ、cvhaartraining.cpp、cvhaartraining.lib 、cvhaartraining.h は含まれていました。 ネットでcvhaartraining.dllを検索して見ましたが、見つかりませんでした。 そこで、cvhaartraining.cpp、cvhaartraining.lib 、cvhaartraining.h があるのですから、これからDLLを作るか、プログラムが動作すれば良いのですから、プログラムに組み込んだり出来ないでしょうか。 先に述べた様に、開発環境やプログラム構造を変えた経験は殆ど無いのですが、この問題の解決策があれば挑戦して見たいと思って降ります。 解決策お分かりに成る方が居られましたら宜しくお教え下さい。

  •  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  にしました。  コンパイルエラーを解決する方法をご教示くださると、大変幸いです。  よろしくお願いします。

  • 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について 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というエラーが出て実行できません。 どうしたら実行できるんでしょうか?

  • openCVでのデバックエラー

    画像や動画の研究で、aviファイルから色の抽出などを行うためにIntelのopenCVを使用と考えています。 しかし、自作プログラムやopenCVに付属されているサンプルプログラムさえもデバックが失敗してしまい実行することができません。 OSはWindows Professional version2002のVisualC++ 2005で動かしています。 openCVは「OpenCV_b5a」を使用しています。 インストール時にVC++のインクルードファイルに 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 を追加させました。 新しくプロジェクトを作成するたびに、リンカの入力に "cv.lib" "cxcore.lib" "cvaux.lib" "highgui.lib" "ipl.lib" を追加させプログラムを作っています。 しかし、デバックをするとすべてのプログラムにおいて、 'AAA.exe': 'C:\WINDOWS\system32\ntdll.dll' を読み込みました。シンボルが読み込まれていません。 'AAA.exe': 'C:\WINDOWS\system32\kernel32.dll' を読み込みました。シンボルが読み込まれていません。 ・・・・・・ と、シンボルが読み込まれていませんとエラーが沢山表示され、 プログラム '[2508] AAA.exe: ネイティブ' はコード -1 (0xffffffff) で終了しました。 と、失敗して困っています。 初心者ですが、この原因が分かる方いましたらどうぞご教授ください。

  • Borland C++ Compiler

    学校のC言語の授業で使用するので、Borland C++ Compilerをインストールしました。 今までに作ったプログラムや、教科書に載っていたサンプルプログラムをコンパイルして軽い勉強をしていたのですが、コンパイルの際にエラーが出るようになりました。 コマンドプロンプトでbcc32と打つと、パラメータのリストのようなものが出てくるので、-nなど適当にパラメータをつけて実行したら以下のようなエラーが出るようになりました。 Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland test.c: Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Error: 外部シンボル '_main' が未解決(C:\BORLAND\BCC55\LIB\C0X32.OBJ が参照) objとtdsファイルは出力されるのですが、exeが出力されません。 どうやったらなおるか、教えてください。

  • 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; } --------------- 初心者な質問で大変恐縮ながら、どこを修正すればよいかお分かりでしたら、お教え頂けませんでしょうか?何卒宜しくお願いします。

専門家に質問してみよう