• 締切済み

Wisual Windows for BC++ で OpenCVのサンプルコードのコンパイル

http://opencv.jp/sample/contour_processing.html にあるサンプルコードをコンパイルしたところ 警告 W8057 \OpenCV\cv\include\cvcompat.h 391: パラメータ 'bound_rect' は一度も使用されない(関数 cvConvexHull ) 警告 W8019 \OpenCV\cv\include\cvcompat.h 425: コードは効果を持たない(関数 cvMinAreaRect )  同じような警告が多数と エラー E2193 \opencvtest1.c 28: 呼び出し時のパラメータが足りない:cvCircle(関数 main ) エラー E2193 \opencvtest1.c 34: 呼び出し時のパラメータが足りない:cvRectangle(関数 main ) *** 2 errors in Compile *** というエラーが2つ出て、先に進みません。 ちなみに28行目のソースリストは cvCircle (img, pt, 3, CV_RGB (0, 255, 0), CV_FILLED); 34行目は cvPoint (rect.x + rect.width, rect.y + rect.height), CV_RGB (255, 0, 0), 2); で、サンプルプログラムそのままで、何もいじっていません。 なお、インクルードファイルのパスとライブラリファイルのパスは設定してあります。

みんなの回答

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

OpenCVはよく知りませんが、 OpenCV: Image Processing and Analysis Reference http://robotics.elec.nara-k.ac.jp/opencv/ref/OpenCVRef_ImageProcessing.htm にあるプロトタイプを見た感じ void cvRectangle( CvArr* img, CvPoint pt1, CvPoint pt2, double color, int thickness=1 ); void cvCircle( CvArr* img, CvPoint center, int radius, double color, int thickness=1 ); C++ 前提のような気がするんですがどうなんでしょうか? > エラー E2193 \opencvtest1.c 28: 呼び出し時のパラメータが足りない:cvCircle(関数 main ) > エラー E2193 \opencvtest1.c 34: 呼び出し時のパラメータが足りない:cvRectangle(関数 main ) これは C でコンパイルしてますよね?

usatan2
質問者

お礼

回答ありがとうございます。 おっしゃるとおり、Cでコンパイルしていました。 おかげさまでで、C++でコンパイルしたところ、コンパイルはとおりました。 しかし今度は、 コンソール型でプロジェクトを作成すると、 Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Error: 外部シンボル '_cvCreateMemStorage' が未解決(\OPENCVTEST1.OBJ が参照) Error: 外部シンボル '_cvCreateImage' が未解決(\OPENCVTEST1.OBJ が参照) Error: 外部シンボル '_cvSetZero' が未解決(\OPENCVTEST1.OBJ が参照) Error: 外部シンボル '_cvCreateSeq' が未解決(\DEBUG\OPENCVTEST1.OBJ が参照) Error: 外部シンボル '_cvSeqPush' が未解決(\OPENCVTEST1.OBJ が参照) Error: 外部シンボル '_cvCircle' が未解決(\OPENCVTEST1.OBJ が参照) Error: 外部シンボル '_cvBoundingRect' が未解決(\OPENCVTEST1.OBJ が参照) Error: 外部シンボル '_cvRectangle' が未解決(\OPENCVTEST1.OBJ が参照) Error: 外部シンボル '_cvNamedWindow' が未解決(\OPENCVTEST1.OBJ が参照) Error: 外部シンボル '_cvShowImage' が未解決(\OPENCVTEST1.OBJ が参照) Error: 外部シンボル '_cvWaitKey' が未解決(\OPENCVTEST1.OBJ が参照) ウインドウズ型でプロジェクトを作成すると、 Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Error: 外部シンボル 'WinMain' が未解決(\BCC55S\LIB\C0W32.OBJ が参照) ==>該当する実行型ではないかもしれません。必要ならエラーの行で右クリックし、[実行型の再設定]できます。 のように、どちらでもエラーになって先に進みません。

usatan2
質問者

補足

おかげさまで、別の質問で解決しました。 http://oshiete1.goo.ne.jp/qa3636742.html 結論から言うと、 bcc32 -WC -6 -Od -w- -AT -pc -H- -k -b -v -y -eDebug\proj2.exe Debug\opencv1.obj D:\OpenCV\lib\cv.lib D:\OpenCV\lib\cxcore.lib D:\OpenCV\lib\highgui.lib のように、コマンドラインでは使用ライブラリを直接指定すればよいことがわかり、そのためには、visual windows for BC++の[プロジェクト]-[設定]-[リンク]-[オブジェクト・ライブラリ指定]にコマンドラインで指定した3つのライブラリ D:\OpenCV\lib\cv.lib D:\OpenCV\lib\cxcore.lib D:\OpenCV\lib\highgui.lib を指定すればOKでした。

関連するQ&A

  • Visual Windows for BC++ のサンプルプログラムがエラーになる

    Visual Windows for BC++ をインストールした直後に、新しいプロジェクトをwindows型でつくり、サンプルプログラムをビルドしたところ、うまく実行ファイルができ、正常に動作しました。 次に、OpenCVを http://nautilus.cs.miyazaki-u.ac.jp/~yoshi/pukiwiki/index.php を参考にダウンロードして、 インクルードファイルの検索パスに3つ: C:\Program Files\OpenCV\cv\include、C:\Program Files\OpenCV\cxcore\include、C:\Program Files\OpenCV\otherlibs\highgui ライブラリファイルの検索パスに1つ:C:\Program Files\OpenCV\lib を追加しました。 OpenCVのサンプルプログラムをビルドしようとしたのですがエラーになり先に進みません。それどころか、インストール直後にビルドできたサンプルプログラムもエラーが出るようになってしまいました。 エラーが発生したため、brc32.exe を終了します。 となります。 コンパイルも、以下の警告が出るようになってしまいました。 私の設定が悪いのでしょうか、それとも、Visual Windows for BC++では、OpenCVは扱えない ということでしょうか? よろしくお願いします。 Visual Windows for BC++, Copyright (c) 2003-2007 M. Yasue: proj1.exe ビルド実行中..... Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland ..\hello.cpp: 警告 W8060 ..\hello.cpp 30: おそらく不正な代入(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) ) 警告 W8057 ..\hello.cpp 41: パラメータ 'hPrevInstance' は一度も使用されない(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) ) 警告 W8057 ..\hello.cpp 41: パラメータ 'lpCmdLine' は一度も使用されない(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) ) 警告 W8057 ..\hello.cpp 95: パラメータ 'message' は一度も使用されない(関数 __stdcall OnPaint(HWND__ *,unsigned int,unsigned int,long) ) 警告 W8057 ..\hello.cpp 95: パラメータ 'wParam' は一度も使用されない(関数 __stdcall OnPaint(HWND__ *,unsigned int,unsigned int,long) ) 警告 W8004 ..\hello.cpp 130: 'wmEvent' に代入した値は使われていない(関数 __stdcall WndProc(HWND__ *,unsigned int,unsigned int,long) ) 警告 W8057 ..\hello.cpp 183: パラメータ 'lParam' は一度も使用されない(関数 __stdcall About(HWND__ *,unsigned int,unsigned int,long) ) Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland リソースファイルコンパイル・リンク実行中..... Borland Resource Compiler Version 5.40 Copyright (c) 1990, 1999 Inprise Corporation. All rights reserved. 終了.....

  • OpenCVでサンプルコードを使うとエラーが出ます

    環境はVidualStudio2008、OpenCVは2.1のバージョンを利用しています。 OpenCVのテンプレートマッチングのサンプルを利用したところエラーが発生しました。 ソースは以下のものを使っています。 ところどころに入っているprintfは私が自分で入れたものですがこれが原因であるとは考えにくいのです。 エラーは添付したような画像で現れます。 またデバッグしたところ [下のフレームは間違っているか、または見つかりません。KernelBase.dll に対して読み込まれたシンボルはありません。] KernelBase.dll!76b7b9bc() このような文章も表示されました。 どうすれば解決できるでしょうか。 #include <cv.h> #include <highgui.h> int main (int argc, char **argv) { double min_val, max_val; CvPoint min_loc, max_loc; CvSize dst_size; IplImage *src_img, *tmp_img, *dst_img; argv[1]="○○"; argv[2]="○○"; argc=3; printf("1complete\n"); cvNamedWindow ("Image", 1); src_img = cvLoadImage (argv[1], CV_LOAD_IMAGE_COLOR); tmp_img = cvLoadImage (argv[2], CV_LOAD_IMAGE_COLOR); if(argc != 3 || (src_img = cvLoadImage (argv[1], CV_LOAD_IMAGE_COLOR))==0||(tmp_img = cvLoadImage (argv[2], CV_LOAD_IMAGE_COLOR))==0) return -1; printf("2complete\n"); // (1)探索画像全体に対して,テンプレートのマッチング値(指定した手法に依存)を計算 dst_size = cvSize (src_img->width - tmp_img->width + 1, src_img->height - tmp_img->height + 1); printf("2-1complete\n"); dst_img = cvCreateImage (dst_size, IPL_DEPTH_32F, 1);    //ここで動作停止 printf("2-2complete\n"); cvMatchTemplate (src_img, tmp_img, dst_img, CV_TM_CCOEFF_NORMED); printf("2-3complete\n"); cvMinMaxLoc (dst_img, &min_val, &max_val, &min_loc, &max_loc, NULL); printf("3complete\n"); // (2)テンプレートに対応する位置に矩形を描画 cvRectangle (src_img, max_loc, cvPoint (max_loc.x + tmp_img->width, max_loc.y + tmp_img->height), CV_RGB (255, 0, 0), 3); printf("4complete\n"); cvShowImage ("Image", src_img); printf("ALL COMPLETE!\n"); cvWaitKey (0); cvDestroyWindow ("Image"); cvReleaseImage (&src_img); cvReleaseImage (&tmp_img); cvReleaseImage (&dst_img); return 0; }

  • Windows7 64bit でOpenCV2.1を動かしたい

    Windows7 64bit でOpenCV2.1を動かしたい Windows7 64bit visualstadio2005 でopencv2.1を動かしたいのですがreleaseだと動くのにdebugだとうまく動きません。 ネットの入門ページを参照にして インクルードファイルに C:\OpenCV2.1\include ライブラリファイルに C:\OpenCV2.1\lib C:\OpenCV2.1\bin を追加しました。 プラットフォームはよくわからなかったのでwin32とx64の両方に入れてみました また、環境変数もインストールの時点できちんと入っていることは確認しました。 また、プロジェクトのプロパティ→リンカ→入力→追加依存のファイルにも 構成がdebugのときに cv210d.lib cxcore210d.lib cvaux210d.lib highgui210d.lib releaseのときに cv210.lib cxcore210.lib cvaux210.lib highgui210.lib としています。 また、コード部分に #include "cv.h"と入力してもエラーが出るので #include <C:\OpenCV2.1\include\opencv\cv.h> とすることで対応している状況です。 どうすればうまく動くようになるでしょうか? もしよろしければ回答お願いします

  • 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 スキップ ========== どのようにすれば通るのでしょうか? 教えてください。よろしくお願いします。

  •  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の練習

    今、練習でhttp://gihyo.jp/dev/feature/01/opencv/0004こちらのオブジェクト検出器を練習しているのですが 1>------ ビルド開始: プロジェクト: 練習, 構成: Debug Win32 ------ 1>gihyo.obj : error LNK2019: 未解決の外部シンボル _cvReleaseHaarClassifierCascade が関数 _main で参照されました。 1>gihyo.obj : error LNK2019: 未解決の外部シンボル _cvHaarDetectObjects が関数 _main で参照されました。 1>C:\Documents and Settings\ユーザー名\デスクトップ\練習2\Debug\練習2.exe : fatal error LNK1120: 外部参照 2 が未解決です。 ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ========== エラーが出てしまって先に進めません。 何が悪いのか教えてください。 よろしくお願いします。 プログラムは #include "cv.h" #include "ml.h" #include "highgui.h" int main(int argc, char* argv[]) { /* 画像のロード */ char imgfile[] = "Test/IMG_0532.jpg"; IplImage* image = cvLoadImage( imgfile, 1 ); /* オブジェクトのロード */ CvHaarClassifierCascade* cascade = (CvHaarClassifierCascade*)cvLoad( "gihyo_basic2.xml" ); CvMemStorage* storage = cvCreateMemStorage(0); CvSeq* objs; int i; /* オブジェクト検出 */ objs = cvHaarDetectObjects( image, cascade, storage, 1.15, 2, CV_HAAR_DO_CANNY_PRUNING ); /* オブジェクト領域の描画 */ for( i = 0; i < objs->total; i++ ) { /* extract the rectanlges only */ CvRect obj_rect = *(CvRect*)cvGetSeqElem( objs, i ); cvRectangle( image, cvPoint(obj_rect.x,obj_rect.y), cvPoint((obj_rect.x+obj_rect.width), (obj_rect.y+obj_rect.height)), CV_RGB(255,0,0), 3 ); } /* 画像の表示 */ cvReleaseMemStorage( &storage ); cvNamedWindow ("result", CV_WINDOW_AUTOSIZE); cvShowImage( "result", image ); cvWaitKey(0); cvDestroyWindow("result"); cvReleaseHaarClassifierCascade( &cascade ); /* 結果の保存 */ cvSaveImage("result1.jpg", image); cvReleaseImage( &image ); return 0; }

  • opencvにおけるコンパイルエラー解決法

    【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.html しかし、以下のHPに記載されているオプティカルフローのサンプルプログラムを動かそうとすると上記のヘッダファイルが開けない。という旨のエラーメッセージが出ます。 http://opencv.jp/sample/optical_flow.html そのままコンパイルしようとした際、プリコンパイルヘッダーをソースに追加する指示が一度出たので#include "StdAfx.h"はソースに追加してあります。 プリコンパイルヘッダーを使用しない。という設定も試みましたがダメでした。 解決法を教えてください。宜しくお願いします。

  • OpenCVによる時間差表示

    書き込みさせていただきます。 今OpenCVをインストールしてVC++にてプログラミングをしています。 カメラ画像を取得してそこに点を打とうとしています。 //中心 cvCircle(frameImage,cvPoint(320,250),1,CV_RGB(0,255,0),5,8,0); //右隅 cvCircle(frameImage,cvPoint(635,250),1,CV_RGB(0,255,0),5,8,0); //左隅 cvCircle(frameImage,cvPoint(5,250),1,CV_RGB(0,255,0),5,8,0); //上 cvCircle(frameImage,cvPoint(320,470),1,CV_RGB(0,255,0),5,8,0); //下 cvCircle(frameImage,cvPoint(320,5),1,CV_RGB(0,255,0),5,8,0); のようにして無理やり点を作って表示させることができました。 この点を 中心→0秒から5秒まで表示 右隅→5秒から10秒まで表示 左隅→10秒から15秒まで表示 のように時間をずらして表示するようなプログラムを作りたいのですが、やり方が調べてもよくわかりません。 教えていただければ幸いです。 よろしくお願いいたします。

  • cvRectangleの使用時に以下のエラーが発生します.

    cvRectangleの使用時に以下のエラーが発生します. Bad flag(parameter ofr structure field)(Unrecognized of unsupported array type) in function cv GetMat, C:\~ Press "Abort" to terminate application. Press "Retry" to debug (if the app is running under debugger). Press "Ignore" to continue (this is not safe) cvRectangleは以下のように使用しています。 cvRectangle ( "a.jpg", cvPoint(x1,y1), cvPoint(x2,y2) , cvScalar(255, 0, 0), 1 , 8 , 0); エラー文に配列のことが書いているのが 翻訳機を通してわかったのですが 具体的なことがわかりません。 原因として何が考えられるか教えてください。 環境はVC++2008でOpenCVを使用しています。 よろしくお願い致します。

  • C言語 コンパイルエラー(文字列または文字定数が閉じていない)

    下記コードでコンパイルすると、コンパイルエラーとなります。試しに、"さようなら"を、"さような"に変更すると、コンパイルエラーは なくなります。どうして、コンパイルエラーとなるのか分からずに困っています。ちなみに、コンパイラは、ボーランドのものを使っています。 ▼エラーとなるコード #include <stdio.h> int main(void) { printf("こんにちは"); printf("さようなら"); return 0; } ▼コンパイルエラー内容 エラー E2380 sample08.c 7: 文字列または文字定数が閉じていない(関数 main ) エラー E2121 sample08.c 9: 関数呼び出しに ) がない(関数 main ) 警告 W8070 sample08.c 10: 関数は値を返すべき(関数 main )

専門家に質問してみよう