Ho installato OpenCV con MacPorts seguendo le indicazioni qui: Compile OpenCV (2.3.1+) for OS X Lion/Mountain Lion with Xcodelibrerie OpenCV Collegamento 2.4.2 su Xcode 4.5.1
Ho anche cercare e provato ogni altra variante di questo su StackExchange e Google, ma questo sembra fammi più vicino
Sembra funzionare per alcune cose, ma non per il codice di esempio fornito con 2.4.2. Nota che ho aggiunto TUTTO opencv 2.4.2 dylibs Link binario con le librerie.
Ad esempio, il seguente compilare ed eseguire:
#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;
}
Tuttavia, quando cerco di costruire qualsiasi dei campioni, come ad esempio il display_image.cpp, ad esempio, come segue, ricevo errori di collegamento.
-Non lavoro-
#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;
}
Ottengo i seguenti errori:
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)
Qualsiasi idea di come risolvere il problema?
Anthony e Marco ti hanno dato la risposta corretta di seguito. È una di quelle cose che, una volta provata, la conosci per sempre. Dovresti accettare una risposta per aiutare i futuri visitatori. – jww