Tôi đã cài đặt opencv với macports theo các hướng dẫn ở đây: Compile OpenCV (2.3.1+) for OS X Lion/Mountain Lion with Xcodethư viện liên kết OpenCV 2.4.2 trên xcode 4.5.1
Tôi cũng đã tìm kiếm và cố gắng mọi biến thể khác của việc này trên stackexchange và google, nhưng điều này dường như làm cho tôi gần nhất.
Dường như nó hoạt động đối với một số thứ, nhưng không làm việc với mã mẫu đi kèm với 2.4.2. Lưu ý rằng tôi đã thêm TẤT CẢ opencv 2.4.2 dylibs Link Binary with Libraries.
Ví dụ, sau đây sẽ biên dịch và chạy:
#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;
}
Tuy nhiên, khi tôi cố gắng xây dựng bất kỳ mẫu nào, chẳng hạn như display_image.cpp, ví dụ như sau, tôi nhận được lỗi liên kết.
-Không KHÔNG WORK-
#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;
}
tôi nhận được các lỗi sau đây:
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)
Bất kỳ ý tưởng làm thế nào để giải quyết này?
Anthony và Marco cung cấp cho bạn câu trả lời đúng dưới đây. Một trong những điều đó, một khi bạn trải nghiệm nó, bạn biết điều đó mãi mãi. Bạn nên chấp nhận câu trả lời để giúp khách truy cập trong tương lai. – jww