Ошибка OpenCV C ++ в Xcode - PullRequest
       28

Ошибка OpenCV C ++ в Xcode

1 голос
/ 04 декабря 2009

Я собрал библиотеки OpenCV с использованием системы сборки cmake, как описано здесь , и добавил заголовочные файлы, файлы .a и .dylib в мой проект терминала c ++. Однако, когда я запускаю приведенный ниже код (получил его с http://iphone -cocoa-objectivec.blogspot.com / 2009/01 / using-opencv-for-mac-os-in-xcode.html ), это дает мне ошибки ниже. Кто-нибудь получил совет? Любая помощь будет высоко ценится.

#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <cv.h>
#include <highgui.h>

int main()
{

    //get the image from the directed path
    IplImage* img = cvLoadImage("/Users/somedir/Programming/TestProj/fruits.jpg", 1);

    //create a window to display the image
    cvNamedWindow("picture", 1);

    //show the image in the window
    cvShowImage("picture", img);

    //wait for the user to hit a key
    cvWaitKey(0);

    //delete the image and window
    cvReleaseImage(&img);
    cvDestroyWindow("picture");

    //return
    return 0;
}

Ошибка

Undefined symbols:
  "_cvLoadImage", referenced from:
      _main in main.o
  "_cvNamedWindow", referenced from:
      _main in main.o
  "_cvReleaseImage", referenced from:
      _main in main.o
  "_cvShowImage", referenced from:
      _main in main.o
  "_cvDestroyWindow", referenced from:
      _main in main.o
  "_cvWaitKey", referenced from:
      _main in main.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

Ответы [ 2 ]

0 голосов
/ 02 ноября 2012

Прежде всего, не создавайте библиотеки с помощью CMake, лучше получить их из macports на Mac, Вы можете легко обновить до новой версии с помощью одной строки ...

Плюс, если вы будете использовать cv::Mat интерфейсы с
#include <opencv2/core/core.hpp> и #include <opencv2/highgui/highgui.hpp> дела пойдут лучше ...;) Включите библиотеки dylib с версиями в конце их названия. (Я думаю, что dylibs без версии предназначены для старого интерфейса #include)

Для начала:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
int main()
{

    //get the image from the directed path
    Mat img = loadImage("/Users/somedir/Programming/TestProj/fruits.jpg");

    //show the image in the window
    imshow("picture", img);

    //wait for the user to hit a key
    waitKey(0);
    //delete the image and window (automatic)
    return 0;
}
0 голосов
/ 06 декабря 2009

Избегайте использования Xcode с OpenCV 2.0. При использовании OpenCV используйте Windows, а также используйте OpenCV 1.1. Это избавит от головной боли. Когда 2.0 / Mac лучше документированы, тогда переходите на платформу Mac / версию 2.0. Книга (О'Рейли) хороша - охватывает v1.1. Следующий взнос для 2.0 должен последовать в ближайшее время. 1.

...