He instalado OpenCV con macports siguiendo las instrucciones aquí: Compile OpenCV (2.3.1+) for OS X Lion/Mountain Lion with Xcodebibliotecas Vinculación OPENCV 2.4.2 en Xcode 4.5.1
También he intentado buscar y todos los demás variación de esto en StackExchange y Google, pero esto parece consigueme más cerca.
Parece que funciona para algunas cosas, pero no para el código de muestra que se envía con 2.4.2. Tenga en cuenta que he agregado ALL opencv 2.4.2 dylibs Link Binary con Bibliotecas.
Por ejemplo, lo siguiente será compilar y ejecutar:
#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;
}
Sin embargo, cuando intento de construir ninguna de las muestras, como la display_image.cpp, ejemplo, de la siguiente manera, consigo errores de enlace.
-¿La NO TRABAJO DE
#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;
}
consigo los siguientes errores:
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)
alguna idea de cómo resolver esto?
Anthony y Marco le dieron la respuesta correcta a continuación. Es una de esas cosas que, una vez que la experimentas, la conoces para siempre. Debe aceptar una respuesta para ayudar a los futuros visitantes. – jww