8

OSX 10.7.5/MacbookPro 2.5 Ghz Intel Core 2 Duo でOpenCV動作するようにセットアップしようとしています。QTここでいくつかの関連する質問を見てきました ( QtCreator で opencv をリンクして Qt ライブラリを使用する方法 および OSX で QT を使用して OpenCV をセットアップするにはどうすればよいですか? ) が、詳細はあまりありません。QT サイトと私の Web 検索では、すべての情報が Windows または Linux に関するもののようです。


私のセットアップとコードを以下にリストしました。コードを実行すると、エラーが発生します。:-1: error: symbol(s) not found for architecture x86_64

これは、パスが間違っているため、または x86_32 用に openCV をビルドした可能性があるため、何かが見つからないということですか? 後者を確認する方法はありますか?私は構成とセットアップ プロセスの一部に精通していません。


更新 2

コンソール出力は以下のとおりです - おそらくエラーは明らかですか?

02:44:38: Running steps for project RP_openCV_01...
02:44:38: Configuration unchanged, skipping qmake step.
02:44:38: Starting: "/usr/bin/make" 
clang++ -headerpad_max_install_names -mmacosx-version-min=10.6 -o RP_openCV_01 main.o   -L/usr/local/lib -1ibopencv_core.2.4.6,dylib -1ibopencv_imgproc.2.4.6.dylib -F/Users/rise/Qt5.0.2/5.0.2/clang_64/lib -framework QtCore 
clang: warning: argument unused during compilation: '-1ibopencv_core.2.4.6,dylib'
clang: warning: argument unused during compilation: '-1ibopencv_imgproc.2.4.6.dylib'
Undefined symbols for architecture x86_64:
  "cv::_InputArray::_InputArray(cv::Mat const&)", referenced from:
      _main in main.o
  "cv::namedWindow(std::string const&, int)", referenced from:
      _main in main.o
  "cv::Mat::deallocate()", referenced from:
      _main in main.o
  "cv::imread(std::string const&, int)", referenced from:
      _main in main.o
  "cv::imshow(std::string const&, cv::_InputArray const&)", referenced from:
      _main in main.o
  "cv::waitKey(int)", referenced from:
      _main in main.o
  "cv::fastFree(void*)", referenced from:
      _main in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [RP_openCV_01] Error 1
02:44:38: The process "/usr/bin/make" exited with code 2.
Error while building/deploying project RP_openCV_01 (kit: Desktop Qt 5.0.2 clang 64bit)
When executing step 'Make'

私がこれまでに持っているもの(tl;dr):

  • ソースから最新バージョンのopenCV(2.4.6)をビルドしてインストールし、いくつかのコマンドラインプログラムでテストしました。

  • QT (5.1) の最新バージョンをインストールし、すべての例を実行することができます。

  • プロジェクトファイルでパスを指定しました(下記)

QT       += core
QT       -= gui

TARGET = RP_openCV_01
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app
SOURCES += main.cpp

INCLUDEPATH += /usr/local/include\
LIBS += -L/usr/local/lib
  • プロジェクト設定(下記)でパスを指定しようとしました。私は追加/usr/local/includeし、/usr/local/lib

ここに画像の説明を入力

main.cpp の簡単なサンプル コード

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

int main() {

    // read an image
    cv::Mat image= cv::imread("dog.jpg");
    // create image window named "My Image"
    cv::namedWindow("My Image");
    // show the image on window
    cv::imshow("My Image", image);
    // wait key for 5000 ms
    cv::waitKey(5000);

    return 1;
}

更新 1

チュートリアルに基づいて試したもう 1 つのことは、QT プロファイルでライブラリを指定することでした (下の画像のように)。チュートリアルはWindows用でしたが、OSXが異なるかどうか、またはどのように異なるかはわかりませんでした。Windowsの例では-1ibopencv_core246d、ピリオドの有無にかかわらず、「d」なしで試しました。もちろん、lib のフルネームは「libopencv_core.2.4.6.dylib」などです。

この種の重要な詳細は常に私をつまずかせますが、チュートリアルでは、このことを知っていると想定されることがよくあります.

 LIBS += -L/usr/local/lib \
     -1ibopencv_core.2.4.6 \
     -1ibopencv_imgproc.2.4.6 \
     -1ibopencv_features2d.2.4.6 \
     -1ibopencv_highgui.2.4.6

ここに画像の説明を入力

4

4 に答える 4

0

ここで 2 つの潜在的な問題に直面しています。

  1. 最初の 1 つは、Mac プラットフォームでは、コンパイラ(clang または gcc) に応じて、同じ stdc++ ライブラリに対してリンクしないことです(iOS プロジェクトで動作する静的な opencv ライブラリを取得しようとしたときに、この問題に遭遇しました)。ただし、C++ エラーがないため、ここでは当てはまらないようですが、それぞれの場合でどのコンパイラを使用しているかを確認する価値があります。
  2. 2 つ目は、QtCreatorグラフィカル アプリです。したがって、端末セッションの設定は認識されません。これには、 の動的ライブラリへのパスが含まれ/usr/localます。これは、さまざまな方法で回避できます。静的なinstall_toolopencv ライブラリを使用する、出力バイナリでコード化されたライブラリへのパスを変更する、または QtCreator の設定を使用してDYLD_LIBRARY_PATH変数を/usr/local/libプログラムの実行時のようなものに設定するなどです。
于 2013-07-08T14:42:51.017 に答える
0

OSXのQTでOpencvをセットアップするために行った手順は次のとおりです。

1-QTをインストールする

2- OpenCV4 をインストールする

3- プロジェクト ファイルに次の行を追加します。

INCLUDEPATH += /usr/local/include/opencv4\

LIBS += -L/usr/local/lib \
     -lopencv_core \
     -lopencv_imgproc \
     -lopencv_features2d\
     -lopencv_highgui

QMAKE_MACOSX_DEPLOYMENT_TARGET = 11.0

4- [プロジェクト] セクションの [ビルド] セクションで、次のチェックを外します。

Add build library search path to DYLD_LIBRARY_PATH and DYLD_FRAMEWORK_PATH

次のリンクが役に立ちます。

飲む

警告バージョン

于 2021-06-24T17:55:25.873 に答える