4

qtクリエーターでopencvを使用する2つの方法を試しました.1つ目は、DLLと.dll.aファイルがopencvライブラリで既にダウンロードされているMing​​wを使用して、次のように.proファイルに.dll.aファイルへの参照を追加するだけです

INCLUDEPATH += D:\\OpenCV\\opencv\\build\\include
LIBS += D:\\OpenCV\\opencv\\build\\x64\\mingw\\lib\\libopencv_calib3d242.dll.a
LIBS += D:\\OpenCV\\opencv\\build\\x64\\mingw\\lib\\libopencv_contrib242.dll.a
LIBS += D:\\OpenCV\\opencv\\build\\x64\\mingw\\lib\\libopencv_core242.dll.a
LIBS += D:\\OpenCV\\opencv\\build\\x64\\mingw\\lib\\libopencv_features2d242.dll.a

opencv をテストするための簡単なコードがあります。

#include <QtCore/QCoreApplication>
#include <opencv/cv.h>

using namespace cv;

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    Mat image;

    return a.exec();
}

しかし、私は次のようにビルドの問題を抱えています

C:\Users\Kato\Documents\QT projects\QtOpenCVYaRab\debug\main.o:-1: 関数~Mat': d:\OpenCV\opencv\build\include\opencv2\core\mat.hpp:278: error: undefined reference to内 cv::fastFree(void*)' d:\OpenCV\opencv\build\include\opencv2\core\mat .hpp:367: エラー: `cv::Mat::deallocate()' への未定義の参照:-1: エラー: collect2: ld が 1 つの終了ステータスを返しました

コンパイル出力の一部を次に示します。

Running build steps for project QtOpenCVYaRab...
Configuration unchanged, skipping qmake step.
Starting: "C:\QtSDK\mingw\bin\mingw32-make.exe" 
C:/QtSDK/mingw/bin/mingw32-make -f Makefile.Debug
mingw32-make[1]: Entering directory `C:/Users/Kato/Documents/QT projects/QtOpenCVYaRab'
g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL

 d:/OpenCV/opencv/build/include/opencv2/core/mat.hpp:278: undefined reference to `cv::fastFree(void*)'
debug/main.o:d:/OpenCV/opencv/build/include/opencv2/core/mat.hpp:367: undefined reference to `cv::Mat::deallocate()'
collect2: ld returned 1 exit status
mingw32-make[1]: *** [debug\QtOpenCVYaRab.exe] Error 1
mingw32-make: *** [debug] Error 2
The process "C:\QtSDK\mingw\bin\mingw32-make.exe" exited with code 2.
Error while building project QtOpenCVYaRab (target: Desktop)
When executing build step 'Make'

2番目の方法は、cmakeを使用してopencvライブラリをコンパイルし、Visual Studio 2010を使用してビルドし、binフォルダー内のファイルへの参照を追加することですが、ビルドの問題はほぼ同じです。

4

5 に答える 5

5
#include "iostream"
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>

using namespace cv;
using namespace std;

int main()
{
    IplImage *image = cvLoadImage("C:\\lena.jpg");
    Mat im(image);
    imshow("TEST",im);
    waitKey();
    return 0;
}

これはurmain.cppです...上記のプログラムはレナの画像を表示します...Windowsプラットフォームのディレクトリの変更を示すために二重の円記号を使用します...imreadがどのように機能するので、画像をIplImageとしてロードしましたそしてそれをMatにキャストしました...ucn次のことも行います。

 IplImage *image = cvLoadImage("C:\\lena.jpg",1);
 cvShowImage("TEST",image);
 cvWaitKey();

.proファイルには、前述のように次の行が含まれている必要があります。

INCLUDEPATH += D:\OpenCV\opencv\build\include

LIBS +=-LD:\OpenCV\opencv\build\x64\mingw\lib\
-lopencv_core242\
-lopencv_highgui242\
-lopencv_imgproc242\
-lopencv_video242\

そして、pathという名前のシステム変数は

  1. D:\ Opencv2.4.2 \ opencv \ build \ x86 \ vc9 \ bin(デスクトップMSVC2008(QtSDK)デバッグ用のQt 4.8.1をターゲットとして使用している場合)
  2. D:\ Opencv2.4.2 \ opencv \ build \ x86 \ mingw \ bin(ターゲットがQt MinGW x86に基づいている場合)
  3. D:\ OpenCV2.4.2 \ opencv \ build \ common \ tbb \ ia32 \ vc9(mingw)(私はこのcozを追加しましたが、いくつかの奇妙なエラーが表示されていました... uはそれを試すことができます)

パス変数を編集した後、Qt ide /アプリケーションを閉じて再起動すると、システム変数の変更が反映されます。

于 2012-08-27T14:12:41.443 に答える
1
INCLUDEPATH += D:\OpenCV\opencv\build\include

LIBS +=-LC:\OpenCV\opencv\build\x64\mingw\lib\
-lopencv_core242\
-lopencv_highgui242\
-lopencv_imgproc242\
-lopencv_video242\


#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>

using namespace cv;

int main()
{
}

コンソール アプリケーションとして実行している場合は、QtCore/QtApplication を含める必要はありません

于 2012-08-26T13:41:43.537 に答える
0

上記のエラーから、Opencv ライブラリにいくつかのファイル/コンポーネントが不足しているようです。Opencv 用の簡単なプログラムから始めてください。このプログラムは、カメラ画像を表示するだけです。

指定されたリンクに従ってください。

http://linux.softpedia.com/get/Multimedia/Graphics/qwebcam-38246.shtml

qwebcam のソース コードをダウンロードし、指示に従って Opencv をセットアップします。これは非常に単純なソース コードであり、正常に動作します (Linux OS でテスト済み)。

私は最近Opencvを試しましたが、このリンクは私にとって最初は静かで役に立ちました。

このコードでエラーを解決できることを願っています。

于 2012-08-28T07:23:22.650 に答える
0

ライブラリ パスを -L で指定してから、ライブラリ ファイルを追加する必要があります。

-l<libname_without_extension>

UNIX の場合 (デフォルトの場所にインストール):

unix: LIBS += -lopencv_core
unix: LIBS += -lopencv_highgui

Windowsの場合(あなたの問題):

win32: LIBS += -L C:\OpenCV2.3\opencv\build\gpu\x64\lib\ -lopencv_core231
于 2012-08-25T19:37:19.663 に答える
-1

同じ問題に遭遇しましたが、.pro を手動で変更してもうまくいきませんでした。最終的に、openCV を Qt に接続する簡単な解決策を見つけました。それについて他のいくつかのスレッドhttps://stackoverflow.com/a/51914928/10245006に投稿し、以下の情報を含めました。

以下に示す手順は、Qt5 のドキュメント [ http://doc.qt.io/qtcreator/creator-project-qmake-libraries.html][1]の「To Add Library」セクションにあります。

  1. クリエーターの左側にある「プロジェクト ペイン」にあるプロジェクト ファイルを右クリックし、[ライブラリの追加...] を選択します。
  2. ウィザードの指示に従ってください

ここから具体的なことを付け加えさせてください...

  1. 「外部ライブラリ」を選択
  2. 「ライブラリ ファイル」については、opencv_worldXXX.lib ファイル (または opencv_worldXXXd.lib ファイル、どちらか一方のみを指定すると、ウィザードにもう一方を自動的に含むチェックボックスがあることに気付くでしょう) に移動します[例: ...\opencv\build\x64\vc12\lib\opncv_world310.lib]
  3. 「インクルード フォルダー」については、ビルド内の「インクルード」フォルダーに移動します。[元。...\opencv\build\include]
  4. オペレーティング システム、動的/静的ライブラリ (いずれか適切な方) を選択します。
  5. NEXT、CLEAN UP、そして RUN を押してください。
于 2018-08-19T06:15:43.363 に答える