2012-04-07 17 views
2

Windows XPでopencvを使用してQtでguiアプリケーションを作成したいとします。以前はQtとopencvの両方を使用していましたが、決して一緒に使用しませんでした。長い話をすると、Qtでopencvの作業をすることができません。Windows上でQtとopencvで問題を構築する

私が検索したすべてのフォーラムでは、情報が散らばっているだけで、通常は答えはありません。ここではすべてのステップを要約します。

  1. Windows版Qt SDK(4.6.3)をダウンロードし、しばらく使用しました。
  2. Windows用のopencv 2.3.1 megapackをダウンロードし、バイナリを追加しました。私はopencvを含む私のQtプロジェクトをコンパイルすることに成功しましたが、opencv関数呼び出しがクラッシュしました。私はいくつかのフォーラムでWindows megapackのバイナリがQtをサポートしていないことを読んだので、自分自身でopencvをビルドしなければならない。
  3. CMake(2.8)の最新バージョンをダウンロードした。
  4. 私はここからOpenCVのソースをダウンロード:http://code.opencv.org/svn/opencv/branches/2.3/
  5. を私が持っていたのQtのバージョン(4.6.3)
  6. のソースをダウンロードし、私は私が作成したのVisual Studioの私の古いバージョン2005
  7. を見つけましたQtのサポートをチェックしているCMakeとのVS2005プロジェクト。 (チェック)
  8. 私はVS2005でopencvをビルドしました。ほとんどのライブラリを作成しましたが、すべてではありません。 Highguiは失敗したものの1つです。問題:Qt\4.6.3\src\corelib\global\qconfig.hが見つかりませんでした。私がダウンロードしたソースには全くqconfig.hはありませんでした!テンプレートqconfig-large.hqconfig-small.hなどが見つかりましたので、そのうちの1つをqconfig.hに改名しました。今、私はリンカーのエラーでいっぱいの画面を得ました。
  9. 代わりに最新のQtソースをダウンロードしました(4.8.1)。今すぐ見つけられないQtTest/qbenchmarkmetric.hを含むソースファイルqbenchmark.hがあります。
  10. 私はあきらめて、MinGWを試しました。
  11. 私はMinGWのメイクファイルを生成するにCMakeを設定し、私は次のエラー得た最新のMinGW(2011年11月18日)
  12. をダウンロード:

を。

CMake Error at C:/Program Files/CMake 2.8/share/cmake-2.8/Modules/Platform/Windows-g++.cmake:1 (INCLUDE): 
    include could not find load file: 
C:/Program Files/CMake 2.8/share/cmake-2.8/Modules/Platform/Windows-gcc.cmake 
Call Stack (most recent call first): 
C:/Program Files/CMake 2.8/share/cmake-2.8/Modules/CMakeCXXInformation.cmake:59 (INCLUDE) 

真は、モジュール/プラットフォームのディレクトリにWindows-g++.cmakeファイルがあるが、それは存在しませんWindows-gcc.cmakeを参照します!

WindowsでQtをサポートするopencvをビルドしてくれた人はいますか?

編集

問題はQtのソースに間違いです。私はMinGWメークファイルを生成することができました。QtCore/qelapsedtimer.hのファイルが全く別のディレクトリにあるので、src/testlib/qtestsystem.hに停止するまで、ビルドはすべてOKになりました! Qtは不完全なソース、をリリースしていますか、何か問題がありましたか?

EDIT2

私の苦しみは続きます。私はすべてをきれいにして始めました。今回はVisual Studioを試してみません。

  1. 私は私が成功したMakefileを作成し、MinGWのとそれを建てCMakeのでは最新のMinGW(2011年11月18日)
  2. をダウンロードしたソースと、最新のQt LIBS(4.8.1)
  3. をダウンロードしました。私は輝く新しいライブラリ(libopencv_core231、etv。)を手に入れました。私はとても幸せでしたが、すぐにそれを祝うのは間違っていました!!
  4. 私は最新のQt SDKをダウンロードしました(間違いなく4.8.0だったので、4.8.1を使用するようにQt Creatorを設定しました)、opencvのないテストプログラムを作成して動作するかどうかを確認しました。出来た!
  5. 私はopencvを使って、画像を読み込んで表示してみました。それはうまくいかなかった。 exited with code -1073741511
  6. Qt Creatorの外で.exeを直接実行しようとしました。それは不足の文句を言いましたlibstdc++-6.dll
  7. 私はそれを検索し、私のMinGWインストール(c:\ mingw \ bin、958 KB)と私のQtインストール(c:\ qt \ mingw \ bin 、793 KB) - このmingwはQtにバンドルされています。
  8. 私は.exeと同じフォルダにコピーしてみましたが、どちらもうまくいきませんでした。私は "プロシージャエントリポイント_ZNSt9exceptionD2EvはダイナミックリンクライブラリlibstdC++ - 6.dllにありませんでした。両方と。これはデバッグされていたので、私はリリースしようとしましたが、似たようなエラーが出て、他のエントリポイントが見つかりませんでした。
  9. フォーラムを検索したところ、libstdC++を静的にリンクする必要があることがわかりました。私はファイルc:\Qt\mkspecs\win32-g++\qmake.confQMAKE_LFLAGS =QMAKE_LFLAGS_DEBUG =の行に-static-libgcc -static-libstdc++を挿入しました。 Qt Creatorを再起動して再構築しても、これはまったく効果がありませんでした。 libstdc++-6.dllをコピーしていない場合でも、まだそれが必要です。もちろん

、OpenCVのなしの私の簡単なテストプログラムは、任意のlibstdc++-6.dllを必要とせずにexeから実行されるので、それは私のOpenCVのビルドは責任であることを意味?私はopencvを新たにビルドしたかったのですが、libstdC++を参照するCMake設定は見つかりませんでした! libstdc++-6.dllファイルのいずれかを使用して、不足しているエントリポイントに関するエラーがQtGui4.dllに言及:

それは手掛かりかもしれません。私はデバッグビルドを持っているので、QtGui * d * 4.d​​llにすべきですか?デバッグとリリースに異なるlibstdc++がありますか?いずれにせよ、リリースをビルドしようとしましたが、同じエラーが発生しました

QtCreatorとQtをWindows XP上で一緒に使ってみて成功した人はいませんか?すべてのフォーラムとQtのアーカイブを検索すると、誰も見つかりませんでした。私はLinuxで開発を行う準備ができていますが、とにかく遅かれ早かれWindowsのリリースが必要になります。

私はQtの、MinGWの、G ++、OpenCVのを忘れると一緒にVisual Basicで何かをハックしようとする私の耳にささやくダークサイドの誘惑に抵抗しようとしています。ああ、恐怖!

答えて

2

OpenCVをソースからビルドする必要があります。すでに行ったように、面倒なことはありません。OpenCVの最近のバージョンはQtを使用してビルドすることができます。 HighguiはオプションでQtを使用します。 Qtの有無にかかわらずビルドするのはあなたの選択です。

OpenCVとともにQtライブラリを使用しました。私はSDKの代わりに行ったのではなく、対応するVSバージョン用に構築されたライブラリを使用しました。ここをクリックしてください:http://qt.nokia.com/downloads/downloads#qt-lib

VS2008とVS2010では使用できますが、以前のバージョンもVS2005用に作成されています。 Visual Studioの古いバージョンはとても大変です。どうしても使用してください。

その後、私はCMakeプロジェクトで一緒に取り上げるのに問題はありませんでした。これは、の線に沿って行く:

find_package(OpenCV) 
find_package(Qt4 ${VOLE_MINIMUM_QT_VERSION} COMPONENTS QtCore QtGui) 
find_package(Qt4 ${VOLE_MINIMUM_QT_VERSION} COMPONENTS QtOpenGL) 

...

qt4_wrap_cpp(moc_sources ${vole_module_moc_sources}) 
qt4_wrap_ui(uic_sources ${vole_module_ui_sources}) 
qt4_add_resources(rcc_sources ${vole_module_rcc_sources}) 

あなたが知っている、通常のもの。

5週間後にWindowsで実行される可能性がありますが、GNU/Linuxではシェルで3つのコマンドが実行されます。

+0

私はそれをよく理解していません。Qt互換のopencvを構築するためには、特定のQtライブラリが必要ですか?問題は、Qt 4.6.3と4.8.1の両方で、公式のQtサイトからダウンロードしたソース保管所には存在しないヘッダーが含まれていることでした。 – vsz

+0

MinGWソリューションもOKですが、問題は似ています:ファイルがありません。以前はMinGWを使用していなかったので、 'Windows-gcc.cmake'がどのように見えるのか分かりません。 – vsz

+0

私は自分が何をしたかしか記述できません。 OpenCV、Qtライブラリ(SDKではなく、特にVS用)とVS 2008(それ以前は2005年)を使用しました。私はそれに遭遇したことがないので、なぜファイルの欠落の問題があるのか​​分かりません。私もSDKを試したことはありません、mingwを試したことはありません。私が指摘したように、OpenCVをQtサポート付きで、そしてQtサポートなしでビルドしようとしましたか?あなたはQtプロジェクトにバグレポートを提出することを検討するかもしれません。 – ypnos

2

OpenCVでQt Creatorを設定する方が簡単です。 This postは、これを段階的に達成する方法を示しています。それは、プロセスに役立ついくつかのスクリーンショットを表示します。

3

ちょうど、私は基本的にQtとOpenCVを組み合わせるのと同じ悪夢を経験しました。これは私の経験でした:

  1. 私はQt Creator 2.4.1でQt SDK 4.7.4をダウンロードしてインストールしましたが問題ありません。
  2. 私はもちろん、Qtの
  3. これですでに来たものとは異なるバージョンを持っていたMinGWのコンパイラをダウンロードし
  4. ...ダウンロードしてインストールOpenCVの2.4.2を、それがすでにMinGWのに来たことを知りません私のCMakeを完全に台無しにしました。たとえCMakeにQt gcc.exeとg ++ .exeを使用するよう明示したとしても、新しくインストールしたMinGWのものを使っていました。おそらく私は熱心にPATH変数にすべてのディレクトリを追加したからです。私は馬鹿だった!
  5. CMakeは有用なファイルを生成できませんでしたので、OpenCVスーパーパックを諦めてインストールしました。 6.スーパーパックのQtとOpenCVが一緒に正常に動作しなかった理由は不思議です。私は決して全く理解していない。 OpenCVが含まれるとすぐにコンソールプログラムがクラッシュするなど、他のユーザーがここで説明したのと同じエラーが発生しました。奇妙なことは、FileExplorerから手動で実行可能ファイルを開始できるということです(私はあなたがプロジェクトフォルダに考えることができるすべての.dllを追加しました:opencv_core242.dll、opencv_highgui242.dll、QtCore4.dll、QtGui4.dllなど... )しかし、私はQt Creator環境から私の小さなテストプログラムを起動することができませんでした。
  6. 私は、depends.exeを使用しているDLLに問題があるかどうかを分析し、MinGWコンパイラを使用してDEBUGにすべてが設定されていても、私のプログラムはQtCore4.dllを使用しようとしました。 ..私の最高の推測は、それがデバッグとリリースのバージョンを混ぜていたということでした。
  7. 私はsuperpackを使い果たし、最初にCMAKEを使い始めてから、Qt MinGWバージョンを使ってOpenCVをビルドし、デバッグモードのすべてをセットアップしてQTオプションを有効にしていることを確認しました。しかしこれまでの運がない
  8. 私はMinGWの使用をやめ、MSVC2010に切り替えました。これはうまく動作します。しかし、私はまだMSVC2010デバッガエンジンが見つからないので、プログラムをデバッグすることができません。私は本当にいけないこれを手動で追加する方法を知っているが、私はまだ

だから私は間違いなく伝えることができるかそれに取り組んで少し経験を持っている誰かのためにQtとOpenCVのを使用することは些細から遠く離れているということですしています!