Lier les librairies OpenCV 2.4.2 sur xcode 4.5.1

J'ai installé opencv avec macports, en suivant les instructions ici: Compiler OpenCV (2.3.1+) pour OS X Lion /Mountain Lion avec Xcode

J'ai également rechercher et essayé tous les autres variation de ce sur stackexchange et google, mais cela semble plus proche de moi.

Il semble fonctionner pour certaines choses, mais pas pour le code d'exemple fourni avec 2.4.2. Notez que j'ai ajouté TOUS les opencv 2.4.2 dylibs Lien Binaire avec les Bibliothèques.

Par exemple, la commande suivante va compiler et exécuter:

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

int main ( int argc, char **argv )
{
    cvNamedWindow( "My Window", 1 );
    IplImage *img = cvCreateImage( cvSize( 640, 480 ), IPL_DEPTH_8U, 1 );
    CvFont font;
    double hScale = 1.0;
    double vScale = 1.0;
    int lineWidth = 1;
    cvInitFont( &font, CV_FONT_HERSHEY_SIMPLEX | CV_FONT_ITALIC,
           hScale, vScale, 0, lineWidth );
    cvPutText( img, "Hello World!", cvPoint( 200, 400 ), &font,
          cvScalar( 255, 255, 0 ) );
    cvShowImage( "My Window", img );
    cvWaitKey();
    return 0;
}

Cependant, lorsque j'essaie de construire l'un des échantillons, tels que la display_image.cpp de, par exemple, comme suit, j'obtiens des erreurs de lien.

-NE FONCTIONNE PAS-

 #include <stdio.h>
 #include <iostream>
 #include "opencv2/imgproc/imgproc.hpp"
 #include "opencv2/highgui/highgui.hpp"
 #include "opencv2/flann/miniflann.hpp"

 using namespace cv; //all the new API is put into "cv" namespace. Export its content
 using namespace std;
 using namespace cv::flann;

static void help()
{
    cout <<
    "\nThis program shows how to use cv::Mat and IplImages converting back and forth.\n"
    "It shows reading of images, converting to planes and merging back, color conversion\n"
    "and also iterating through pixels.\n"
    "Call:\n"
    "./image [image-name Default: lena.jpg]\n" << endl;
}

int main(int argc, char *argv[])
{
    help();
    const char* imagename = argc > 1 ? argv[1] : "lena.jpg";
    Mat img = imread(imagename); //the newer cvLoadImage alternative, MATLAB-style function
    if(img.empty())
    {
        fprintf(stderr, "Can not load image %s\n", imagename);
        return -1;
    }
    if( !img.data ) //check if the image has been loaded properly
        return -1;

    Mat img_yuv;
    cvtColor(img, img_yuv, CV_BGR2YCrCb); //convert image to YUV color space. The output image will be created automatically

    vector<Mat> planes; //Vector is template vector class, similar to STL's vector. It can store matrices too.
    split(img_yuv, planes); //split the image into separate color planes

    imshow("image with grain", img);

    waitKey();

    return 0;

}

J'obtiens les erreurs suivantes:

Undefined symbols for architecture x86_64:
 "cv::split(cv::Mat const&, std::__1::vector<cv::Mat, std::__1::allocator<cv::Mat> >&)", referenced from:
  _main in main1.o
 "cv::imread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int)", referenced from:
  _main in main1.o
 "cv::imshow(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, cv::_InputArray const&)", referenced from:
  _main in main1.o
 ld: symbol(s) not found for architecture x86_64
 clang: error: linker command failed with exit code 1 (use -v to see invocation)

Une idée de comment résoudre ce problème?

source d'informationauteur glerg