プロが教えるわが家の防犯対策術!

VisualStudioC++2010を用いて、#include "_cv.h"を使用したいのですが、ファイルが存在する場所
「C:\Program Files\OpenCV\cv\src」を追加のインクルードファイルに入れても以下のエラーがでます。
1>C:\Program Files\OpenCV\cv\src\_cv.h(84): error C2146: 構文エラー : ';' が、識別子 'icvDepthToDataType' の前に必要です。
1>C:\Program Files\OpenCV\cv\src\_cv.h(84): error C2433: 'CvDataType' : 'inline' はデータ宣言をするのに使用できません。
1>C:\Program Files\OpenCV\cv\src\_cv.h(84): error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
1>C:\Program Files\OpenCV\cv\src\_cv.h(84): error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
・・・・・

どなたか#include "_cv.h"の設定の仕方を教えてくれないでしょうか?

A 回答 (2件)

何をコンパイルしようとしているのですか?



srcの下にあるのファイルだったら、OpenCVをソースからビルドするときに使うファイルだと思われます。

(コンパイル済みのライブラリを使うだけの)一般の利用者が直接_cv.hを使う必要は無いはずです。
あなたの作ったプログラムに#include "_cv.h"とあるなら、それが間違いです。


OpenCV自体のビルドなら、サイト等にビルドのしかたが書いてあります。
includeパスなども自動で設定されるし、オプション等も正しく設定されるので、よほどのことが無いかぎりエラーにはなりません。
失敗するのは、やるべき過程をやっていないのが原因と思われます。



> 1>C:\Program Files\OpenCV\cv\src\_cv.h(84): error C2146: 構文エラー : ';' が、識別子 'icvDepthToDataType' の前に必要です

このような感じでエラーが出ている、ということは、ファイルは見つかっている、ということで。そうでなければ「ファイルが見つからない」旨のエラーになりますから。

この回答への補足

コメントありがとうございます。

実は、C:\Program Files (x86)\OpenCV\cv\src以下にあるcvsnakes.cpp(輪郭線追跡関数cvsnakesImage)を改良することを考えています。

(1)VisualStudioC++2010でプロジェクトを作り、ここにcvsnakes.cppを置いて、cvsnakes.cppを改良する。
(2)サンプルコード(http://opencv.jp/sample/object_tracking.html)も用いて、輪郭線追跡をすることを考えています。
(3)つまりサンプルコードの中の関数cvsnakesImageを改良して、輪郭線追跡を行いたいのです。

補足日時:2012/06/23 00:14
    • good
    • 0

こういうライブラリは、複数のファイルを組み合わせるようになっているのが普通です。


単純にソース一つ持ってくれば動く、というものではありません。

エラーメッセージからして、おそらく、これより前に、icvDepthToDataType 、CvDataType という辺りの定義がされているべきなのに、そうなっていない、というのが原因だと思われます。
これらが何なのか、詳細は調べてません。
どこかのヘッダファイルに書いてあるかもしれないし、追加で別のソースが必要かもしれない。
プリプロセッサの設定でマクロを追加しないといけないかもしれない。

順に解析していって、動作するところまで行けるのなら今の方法でいいかもしれませんが、今のあなたではおそらく無理です。一つ解決すると今度は別のエラーがでて、それを解析して対策すると更に別なエラーが出て....をしばらく繰り返すことになります。

今のあなたにもできそうな方法は「私家版OpenCV」をビルドする方法です。
やりかたは
(1)公式のソースに変更を加える
(2)公式のビルド方法に乗っ取ってビルドする
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!