Windows XP で opencv を使用して、Qt で GUI アプリケーションを作成したいと考えています。以前は Qt と opencv の両方を使用していましたが、一緒に使用したことはありません。簡単に言うと、Qt で opencv を動作させることができません。
私が検索したすべてのフォーラムには、小さな情報が散らばっていて、通常は答えがないので、私が行ったすべての手順をここに要約します.
- Windows用のQt SDK(4.6.3)をダウンロードし、しばらく使用しましたが、成功しました。
- Windows用のopencv 2.3.1メガパックをダウンロードし、バイナリを完備。opencv を含む Qt プロジェクトを正常にコンパイルできましたが、opencv 関数を呼び出すとクラッシュしました。Windows メガパックのバイナリが Qt をサポートしていないことをいくつかのフォーラムで読みました。自分で opencv をビルドする必要があります。
- 最新バージョンの CMake (2.8) をダウンロードしました。
- ここから opencv のソースをダウンロードしました: http://code.opencv.org/svn/opencv/branches/2.3/
- Qt のバージョン (4.6.3) のソースをダウンロードしました。
- 古いバージョンの Visual Studio 2005 が見つかりました
- CMake で VS2005 プロジェクトを作成し、Qt のサポートを確認しました。(
WITH_QT
チェック済み) - VS2005でopencvをビルドしました。ほとんどのライブラリが作成されましたが、すべてではありませんでした。
Highgui
失敗したものの中にありました。問題:Qt\4.6.3\src\corelib\global\qconfig.h
が見つかりませんでした。qconfig.h
私がダウンロードしたソースにはまったくありませんでした!テンプレート などをいくつか見つけqconfig-large.h
たqconfig-small.h
ので、そのうちの 1 つを にリネームしましたqconfig.h
。これで、リンカ エラーでいっぱいの画面が表示されました。 - 代わりに最新の Qt ソース (4.8.1) をダウンロードしました。現在、見つからないインクルード
qbenchmark.h
を含むソース ファイルがあります。QtTest/qbenchmarkmetric.h
- あきらめて、MinGW を試してみました。
- 最新の MinGW をダウンロードしました (2011.11.18)
- 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 も試していません。
- ソース付きの最新の Qt ライブラリをダウンロードしました (4.8.1)
- 最新の MinGW をダウンロードしました (2011.11.18)
- CMake で Makefile を作成し、MinGW でビルドしました。光沢のある新しいライブラリ (
libopencv_core231
など) を入手しました。とても嬉しかったのですが、それをすぐに祝うなんて間違っていました!! - 最新の Qt SDK をダウンロードし (奇しくも 4.8.0 だったので、Qt Creator で 4.8.1 を使用するように設定しました)、opencv なしでテスト プログラムを作成して、動作するかどうかを確認しました。出来た!
- 画像を読み取って表示するだけで、opencvを使用してみました。うまくいきませんでした。
exited with code -1073741511
.exe
Qt Creatorの外部で直接実行してみました。行方不明を訴えたlibstdc++-6.dll
- 私はそれを検索し、MinGW インストール (c:\mingw\bin、958 KB) と Qt インストール (c:\qt\mingw\bin、793 KB) で見つけました - この mingw はバンドルされていましたQtで。
- 私がいるのと同じフォルダーにそれらをコピーして、両方を試しました
.exe
が、どちらも機能しませんでした。「プロシージャ エントリ ポイント _ZNSt9exceptionD2Ev がダイナミック リンク ライブラリ libstdc++-6.dll に見つかりませんでした。」両方と。これはデバッグ中だったので、リリースを試みましたが、同様のエラーが発生し、他のエントリ ポイントが見つかりませんでした。 - フォーラムを検索したところ、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 で何かをハックしようとするダークサイドの誘惑に抵抗しようとしています。ああ、恐怖!