1

構築中の OSX アプリケーションに OpenFrameworks を使用したいと考えています。ただし、cv::imread() など、C++ OpenCV コマンドを使用する既存のコードを含める必要があります。

Xcode リンカがエラーをスローしますUndefined symbols for architecture i386: "cv::imread(std::string const&, int)。最初は、ofxOpenCv にある既存の OpenCV コードを使用しようとしましたが、以前の OpenFrameworks 以外のプロジェクトで使用していたように、OpenCV フレームワークを含めることに戻りました。どちらの方法でもリンクの問題は解決しませんでした。

私が知る限り、問題は OpenCV がlibc++コンパイラでコンパイルされているのに対し、OpenFrameworks はlibstdc++コンパイラでコンパイルされていることです。

  • このプレゼンテーションでは、OpenFrameworks 内で C++ OpenCV コマンドを使用する方法を示しますが、これは Windows でのものであり、詳細な説明ではありません。
  • この SO の質問は、OpenCV を libstdc++ で再コンパイルできることを意味しますが、与えられた解決策は iOS 用であり、参照されている make ファイルは OSX/Linux 用には存在しません。

OSXでOpenCV C++コマンドでOpenFrameworksを使用することはまったく可能ですか?

4

1 に答える 1

2

Kyle McDonald の ofxCvアドオンを使用してください。これは、openframeworks から opencv へのはるかに優れたインターフェイスです。ofImageから変換するためのユーティリティや、of アプリケーションで直接描画するためのヘルパーなどを含みます。cv::Matcv::Mat

#include "testApp.h"

using namespace ofxCv;
using namespace cv;
Mat img;
void testApp::setup() {
    img = imread("yourImage.png");//make sure the path is correct
}

void testApp::update() {
}

void testApp::draw() {
    drawMat(img,0, 0);
}

また、Undefined symbols for architecture i386:エラーは、おそらく i386(32b ビット) ファイルではなく、x64(64 ビット) opencv .dylib ファイルに対してリンクしたことを意味します。

于 2013-08-23T07:37:28.953 に答える