1

我想将 OpenFrameworks 用于我正在构建的 OSX 应用程序。但是,我需要包含一些使用 C++ OpenCV 命令的现有代码,例如 cv::imread()。

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 Question暗示 OpenCV 可以在 libstdc++ 下重新编译,但给出的解决方案适用于 iOS,并且 OSX/linux 不存在引用的 make 文件。

是否可以在 OSX 下将 OpenFrameworks 与 OpenCV C++ 命令一起使用?

4

1 回答 1

2

请使用Kyle McDonald 的 ofxCv插件,它是从 openframeworks 到 opencv 的更好的接口。它包括从 ofImage 转换并返回的实用程序cv::Mat,例如,或者在您的应用程序中直接绘制的助手:cv::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:错误意味着您可能链接到 x64(64 位)opencv .dylib 文件,而不是 i386(32b 位)文件。

于 2013-08-23T07:37:28.953 回答