2

Windows XP で opencv を使用して、Qt で GUI アプリケーションを作成したいと考えています。以前は Qt と opencv の両方を使用していましたが、一緒に使用したことはありません。簡単に言うと、Qt で opencv を動作させることができません。

私が検索したすべてのフォーラムには、小さな情報が散らばっていて、通常は答えがないので、私が行ったすべての手順をここに要約します.

  1. Windows用のQt SDK(4.6.3)をダウンロードし、しばらく使用しましたが、成功しました。
  2. Windows用のopencv 2.3.1メガパックをダウンロードし、バイナリを完備。opencv を含む Qt プロジェクトを正常にコンパイルできましたが、opencv 関数を呼び出すとクラッシュしました。Windows メガパックのバイナリが 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. CMake で VS2005 プロジェクトを作成し、Qt のサポートを確認しました。(WITH_QTチェック済み)
  8. VS2005でopencvをビルドしました。ほとんどのライブラリが作成されましたが、すべてではありませんでした。Highgui失敗したものの中にありました。問題:Qt\4.6.3\src\corelib\global\qconfig.hが見つかりませんでした。qconfig.h私がダウンロードしたソースにはまったくありませんでした!テンプレート などをいくつか見つけqconfig-large.hqconfig-small.hので、そのうちの 1 つを にリネームしましたqconfig.h。これで、リンカ エラーでいっぱいの画面が表示されました。
  9. 代わりに最新の Qt ソース (4.8.1) をダウンロードしました。現在、見つからないインクルードqbenchmark.hを含むソース ファイルがあります。QtTest/qbenchmarkmetric.h
  10. あきらめて、MinGW を試してみました。
  11. 最新の MinGW をダウンロードしました (2011.11.18)
  12. MinGW makefile を生成するように CMake を設定しましたが、次のエラーが発生しました。

.

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に、Modules/Platform ディレクトリにファイルがありますが、Windows-gcc.cmake存在しないファイルを参照しています!

WindowsでQtをサポートするopencvを構築できた人はいますか?もしそうなら、どのように?

編集

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

編集2

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

  1. ソース付きの最新の Qt ライブラリをダウンロードしました (4.8.1)
  2. 最新の MinGW をダウンロードしました (2011.11.18)
  3. CMake で Makefile を作成し、MinGW でビルドしました。光沢のある新しいライブラリ (libopencv_core231など) を入手しました。とても嬉しかったのですが、それをすぐに祝うなんて間違っていました!!
  4. 最新の Qt SDK をダウンロードし (奇しくも 4.8.0 だったので、Qt Creator で 4.8.1 を使用するように設定しました)、opencv なしでテスト プログラムを作成して、動作するかどうかを確認しました。出来た!
  5. 画像を読み取って表示するだけで、opencvを使用してみました。うまくいきませんでした。exited with code -1073741511
  6. .exeQt Creatorの外部で直接実行してみました。行方不明を訴えた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++ を静的にリンクする必要があるという提案が見つかりました。-static-libgcc -static-libstdc++QMAKE_LFLAGS =QMAKE_LFLAGS_DEBUG =ファイルに挿入しましたc:\Qt\mkspecs\win32-g++\qmake.conf。Qt Creator を再起動して再構築した後でも、これはまったく効果がありませんでした。をコピーしない場合libstdc++-6.dllでも、必要です。

もちろん、opencv を使用しない単純なテスト プログラムは から実行されるexeためlibstdc++-6.dll、opencv ビルドが責任を負うことになります。opencv を新たにビルドしたかったのですが、 libstdc++ を参照する CMake の設定が見つかりません。

ファイルの 1 つを使用するlibstdc++-6.dllと、欠落しているエントリポイントに関するエラーが QtGui4.dll に言及している可能性があります。私はデバッグ ビルドを持っているので、QtGui* d *4.dll であるはずですよね? libstdc++デバッグ用とリリース用に異なる がありますか? いずれにせよ、リリースをビルドしようとしましたが、どちらも機能しませんでした、同じエラー

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

Qt、MinGW、g++、opencv を忘れて、Visual Basic で何かをハックしようとするダークサイドの誘惑に抵抗しようとしています。ああ、恐怖!

4

3 に答える 3

3

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

  1. Qt SDK 4.7.4 と Qt Creator 2.4.1 をダウンロードしてインストールしましたが、問題ありません。
  2. OpenCV 2.4.2 をダウンロードしてインストールしましたが、既に MinGW に付属していることを知りませんでした...
  3. もちろん、Qtに既に付属しているものとは異なるバージョンのMinGWコンパイラをダウンロードしました
  4. これは、CMake に Qt gcc.exe と g++.exe を使用するように明示的に指示した場合でも、CMake を完全に台無しにしました。新しくインストールした 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 に設定しても、プログラムは QtCore4d.dll ではなく QtCore4.dll を使用しようとしていることがわかりました...私の最善の推測は、デバッグ バージョンとリリース バージョンが混在していたことです。
  7. スーパーパックの使用をあきらめ、最初に CMAKE を使用してから、Qt MinGW バージョンを使用して OpenCV をビルドし、すべてをデバッグ モード用にセットアップして QT オプションを有効にしようとしました。しかし、これまでのところ運が悪い
  8. 私は MinGW の使用をやめ、MSVC2010 に切り替えました。ただし、MSVC2010 デバッガー エンジンが見つからないため、プログラムをデバッグできません。これを手動で追加する方法は本当にわかりませんが、まだ取り組んでいます

つまり、経験の浅い人が Qt と OpenCV を使用することは決して簡単なことではありません。

于 2012-09-21T13:57:40.543 に答える
2

OpenCVを使用してQtCreatorを構成する方が簡単な場合があります。この投稿は、それを達成する方法を段階的に示しています。プロセスを支援するために、いくつかのスクリーンショットも表示されます。

于 2012-04-08T00:37:52.857 に答える
2

すでに行ったように、ソースから OpenCV をビルドする必要があります。手間はかかりません。OpenCV の最近のバージョンは、Qt を使用しても使用しなくてもビルドできることに注意してください。Highgui はオプションで Qt を使用します。Qt を使用してビルドするか、Qt を使用せずにビルドするかは、あなたの選択です。

Qt ライブラリを OpenCV と一緒に長い間使用してきました。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 つのコマンドです。

于 2012-04-07T18:03:48.287 に答える