Mam zainstalowany OpenCV z DarwinPorts następujących kierunków tutaj: Compile OpenCV (2.3.1+) for OS X Lion/Mountain Lion with XcodeŁączenie bibliotek OpenCV 2.4.2 na Xcode 4.5.1
mam szukać i próbował każdą inną odmianę tego na Stack Exchange Network i Google, ale to wydaje się znajdź mnie najbliżej.
Wydaje się działać dla niektórych rzeczy, ale nie dla przykładowego kodu dostarczanego z 2.4.2. Zauważ, że dodałem ALL opencv 2.4.2 dylibs Link Binary z bibliotekami.
Na przykład, następujące skompilować i uruchomić:
#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;
}
Jednak gdy próbuję zbudować żadnej z próbek, takich jak display_image.cpp, przykładowo, w następujący sposób, otrzymuję błędy łącza.
-DOES NIE pracą
#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;
}
otrzymuję następujące błędy:
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)
Każdy pomysł jak rozwiązać ten problem?
Anthony i Marco podali poprawną odpowiedź poniżej. Jest to jedna z tych rzeczy, które po jej doświadczeniu znasz na zawsze. Powinieneś zaakceptować odpowiedź, aby pomóc przyszłym odwiedzającym. – jww