プロが教える店舗&オフィスのセキュリティ対策術

これまでOpenCV1.1を使っていたのですが類似画像検索をするのにHOG特徴量を用いたいと思い、HOG特徴量を求める関数のあるOpenCV2.3もインストールしました。

その際、OpenCV1.1はアンインストールして、最初からプログラムを書き換えないとダメなのでしょうか?ためしに今まで書いていたプログラムにOpenCV2.3のライブラリをインクルードしてみると、それだけで100個以上のビルドエラーが発生してしまいました。CとC++の違いによるものなのでしょうか?
あとPathの設定などもOpenCV1.1のときのものを残したまま、OpenCV2.3用のPathを追加しただけなのですが、大丈夫なのでしょうか?

解決方法がわかる方がいらっしゃれば、教えて下さい。よろしくお願いいたします。

A 回答 (3件)

具体的なエラーは?


使用環境は?
設定は?


1.1→2.xでヘッダファイルのディレクトリ構成等が変わってます。それに対応させてますか?

2.xでも、ほとんどのC言語用APIはそのまま残っており、コンパイルはほぼ変更無しに利用できるはずです。
ライブラリ名にバージョンを表す数字が入ってる場合があるので、リンクするファイルは変更が必要なケースがあります。

> Pathの設定などもOpenCV1.1のときのものを残したまま、OpenCV2.3用のPathを追加しただけ

このために、使いたい方のバージョンが使えてない、ということはありそうです。
具体的に、どんな変更をしたのですか?

この回答への補足

具体的には

#include <cv.h>
#include <highgui.h>
#include "opencv2/flann/flann.hpp"
int main (int argc, char **argv){
return 0;
}

を実行するとエラーが出ます。
#include "opencv2/flann/flann.hpp"
の一行を消せば正常に実行できます。

エラーはかなり長いので最後の4行をコピペすると

1>c:\opencv2.3\build\include\opencv2\core\types_c.h(958): error C2027: 認識できない型 'CvRect' が使われています。
1> c:\program files (x86)\opencv\cxcore\include\cxtypes.h(840) : 'CvRect' の宣言を確認してください。
1>c:\opencv2.3\build\include\opencv2\core\types_c.h(958): fatal error C1003: プログラム内のエラーが 100 個を超えました。コンパイルは中断されます。

という感じです。

使用環境はWindows7、Microsoft Visual C++ 2010 Expressです。
うまく説明できてない気がしますが、よろしくお願いいたします...

補足日時:2012/10/19 19:26
    • good
    • 0

まず、そのように大量にエラーが出るときにありがちなのは、


「最初の方の #includeとかプロトタイプ が間違ってて、そこから連鎖している」
というものです。

たとえば
「認識できない型 'CvRect' が使われています。」
とありますが、CvRectはcv.hあたりで定義されているはずです。
これが「未定義」となっているのなら、cv.hの読み込みに失敗したと考えるのが妥当です。

ということで、最後のエラーだけでは何の解決にもなりません。最初の方を見ましょう。

それから、OpenCVは、cv.h等だけを#includeして、"opencv2/flann/flann.hpp" のような個々のヘッダは#includeしないのが普通の使い方です。これが必要、ということは、cv.hが1.1のものになっているのでは?
    • good
    • 0

まず、OpenCVを使うのに最低限必要なヘッダファイルは cxcore (opencv2 なら core)です。

cv ではありませんのでお間違いなきよう。

複数のOpenCVのバージョンを使用するのは不可能ではないかもしれませんが、やめたほうが無難です。少なくとも、ビルドエラーの意味もわからないようでは設定の変更もままなりませんので、新しい方に統一したほうがいいでしょう。ソースの修正もさほど難解ではないはずです。
    • good
    • 0
この回答へのお礼

ありがとうございました。解決しました。

お礼日時:2012/10/23 19:54

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