La compilation d'une base OpenCV programme sur Mac OS X 10.7
J'ai installé opencv de Macports et c'est dans
/opt/local/include
J'ai essayé de compiler de base OPENCV code de Terminal en donnant les commandes suivantes, mais il n'est pas compilé:
g++ example.cpp -o example -I /usr/local/include/opencv/ -L /usr/local/lib/ -lopencv_highgui -lopencv_calib3d -lopencv_legacy
g++ example.cpp -o example -I /opt/local/include/opencv/ -L /opt/local/lib/ -lopencv_highgui -lopencv_calib3d -lopencv_legacy
Quelqu'un peut me dire le droit de Terminal de commande pour compiler les données ci-dessous opencv programme pour Mac OS X 10,7?
J'ai essayé de compiler l'exemple simple donné sur ce lien:
http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/
Edit:
Voici le code que j'essaie de compiler:
////////////////////////////////////////////////////////////////////////
//
//hello-world.cpp
//
//This is a simple, introductory OpenCV program. The program reads an
//image from a file, inverts it, and displays the result.
//
////////////////////////////////////////////////////////////////////////
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <cv.h>
#include <highgui.h>
int main(int argc, char *argv[])
{
IplImage* img = 0;
int height,width,step,channels;
uchar *data;
int i,j,k;
if(argc<2){
printf("Usage: main <image-file-name>\n");
exit(0);
}
//load an image
img=cvLoadImage(argv[1]);
if(!img){
printf("Could not load image file: %s\n",argv[1]);
exit(0);
}
//get the image data
height = img->height;
width = img->width;
step = img->widthStep;
channels = img->nChannels;
data = (uchar *)img->imageData;
printf("Processing a %dx%d image with %d channels\n",height,width,channels);
//create a window
cvNamedWindow("mainWin", CV_WINDOW_AUTOSIZE);
cvMoveWindow("mainWin", 100, 100);
//invert the image
for(i=0;i<height;i++) for(j=0;j<width;j++) for(k=0;k<channels;k++)
data[i*step+j*channels+k]=255-data[i*step+j*channels+k];
//show the image
cvShowImage("mainWin", img );
//wait for a key
cvWaitKey(0);
//release the image
cvReleaseImage(&img );
return 0;
}
Et voici le résultat:
singhg@~/Programming/opencvTest $ g++ example.c -o example 'pkg-config --cflags --libs opencv'
i686-apple-darwin11-llvm-g++-4.2: pkg-config --cflags --libs opencv: No such file or directory
example.c:14:16: error: cv.h: No such file or directory
example.c:15:21: error: highgui.h: No such file or directory
example.c: In function ‘int main(int, char**)’:
example.c:21: error: ‘IplImage’ was not declared in this scope
example.c:21: error: ‘img’ was not declared in this scope
example.c:23: error: ‘uchar’ was not declared in this scope
example.c:23: error: ‘data’ was not declared in this scope
example.c:32: error: ‘cvLoadImage’ was not declared in this scope
example.c:43: error: expected primary-expression before ‘)’ token
example.c:43: error: expected `;' before ‘img’
example.c:47: error: ‘CV_WINDOW_AUTOSIZE’ was not declared in this scope
example.c:47: error: ‘cvNamedWindow’ was not declared in this scope
example.c:48: error: ‘cvMoveWindow’ was not declared in this scope
example.c:55: error: ‘cvShowImage’ was not declared in this scope
example.c:58: error: ‘cvWaitKey’ was not declared in this scope
example.c:61: error: ‘cvReleaseImage’ was not declared in this scope
Modifier[6Dec]:
singhg@~/Programming/opencvTest $ g++ example.cpp -o example `pkg-config --cflags --libs opencv`
Package opencv was not found in the pkg-config search path.
Perhaps you should add the directory containing `opencv.pc'
to the PKG_CONFIG_PATH environment variable
No package 'opencv' found
i686-apple-darwin11-llvm-g++-4.2: example.cpp: No such file or directory
i686-apple-darwin11-llvm-g++-4.2: no input files
singhg@~/Programming/opencvTest $
dans mon /opt/local/lib
j'ai:
singhg@/opt/local/lib $ ls *cv*
libopencv_calib3d.2.3.1.dylib libopencv_highgui.dylib
libopencv_calib3d.2.3.dylib libopencv_imgproc.2.3.1.dylib
libopencv_calib3d.dylib libopencv_imgproc.2.3.dylib
libopencv_contrib.2.3.1.dylib libopencv_imgproc.dylib
libopencv_contrib.2.3.dylib libopencv_legacy.2.3.1.dylib
libopencv_contrib.dylib libopencv_legacy.2.3.dylib
libopencv_core.2.3.1.dylib libopencv_legacy.dylib
libopencv_core.2.3.dylib libopencv_ml.2.3.1.dylib
libopencv_core.dylib libopencv_ml.2.3.dylib
libopencv_features2d.2.3.1.dylib libopencv_ml.dylib
libopencv_features2d.2.3.dylib libopencv_objdetect.2.3.1.dylib
libopencv_features2d.dylib libopencv_objdetect.2.3.dylib
libopencv_flann.2.3.1.dylib libopencv_objdetect.dylib
libopencv_flann.2.3.dylib libopencv_ts.2.3.1.dylib
libopencv_flann.dylib libopencv_ts.2.3.dylib
libopencv_gpu.2.3.1.dylib libopencv_ts.dylib
libopencv_gpu.2.3.dylib libopencv_video.2.3.1.dylib
libopencv_gpu.dylib libopencv_video.2.3.dylib
libopencv_highgui.2.3.1.dylib libopencv_video.dylib
libopencv_highgui.2.3.dylib
singhg@/opt/local/lib $
Maintenant, j'ai utilisé cette commande:
singhg@~/Programming/opencvTest $ g++ hello-world.cpp -o hello-world -I /opt/local/include/opencv/ -L /opt/local/lib -lopencv_highgui -lopencv_core
In file included from hello-world.cpp:12:
/opt/local/include/opencv/cv.h:63:33: error: opencv2/core/core_c.h: No such file or directory
/opt/local/include/opencv/cv.h:64:33: error: opencv2/core/core.hpp: No such file or directory
/opt/local/include/opencv/cv.h:65:39: error: opencv2/imgproc/imgproc_c.h: No such file or directory
/opt/local/include/opencv/cv.h:66:39: error: opencv2/imgproc/imgproc.hpp: No such file or directory
/opt/local/include/opencv/cv.h:67:38: error: opencv2/video/tracking.hpp: No such file or directory
/opt/local/include/opencv/cv.h:68:45: error: opencv2/features2d/features2d.hpp: No such file or directory
/opt/local/include/opencv/cv.h:69:35: error: opencv2/flann/flann.hpp: No such file or directory
/opt/local/include/opencv/cv.h:70:39: error: opencv2/calib3d/calib3d.hpp: No such file or directory
/opt/local/include/opencv/cv.h:71:43: error: opencv2/objdetect/objdetect.hpp: No such file or directory
/opt/local/include/opencv/cv.h:72:37: error: opencv2/legacy/compat.hpp: No such file or directory
/opt/local/include/opencv/cv.h:79:37: error: opencv2/core/internal.hpp: No such file or directory
In file included from hello-world.cpp:13:
/opt/local/include/opencv/highgui.h:47:39: error: opencv2/highgui/highgui_c.h: No such file or directory
/opt/local/include/opencv/highgui.h:48:39: error: opencv2/highgui/highgui.hpp: No such file or directory
hello-world.cpp: In function ‘int main(int, char**)’:
hello-world.cpp:18: error: ‘IplImage’ was not declared in this scope
hello-world.cpp:18: error: ‘img’ was not declared in this scope
hello-world.cpp:20: error: ‘uchar’ was not declared in this scope
hello-world.cpp:20: error: ‘data’ was not declared in this scope
hello-world.cpp:29: error: ‘cvLoadImage’ was not declared in this scope
hello-world.cpp:40: error: expected primary-expression before ‘)’ token
hello-world.cpp:40: error: expected `;' before ‘img’
hello-world.cpp:44: error: ‘CV_WINDOW_AUTOSIZE’ was not declared in this scope
hello-world.cpp:44: error: ‘cvNamedWindow’ was not declared in this scope
hello-world.cpp:45: error: ‘cvMoveWindow’ was not declared in this scope
hello-world.cpp:52: error: ‘cvShowImage’ was not declared in this scope
hello-world.cpp:55: error: ‘cvWaitKey’ was not declared in this scope
hello-world.cpp:58: error: ‘cvReleaseImage’ was not declared in this scope
singhg@~/Programming/opencvTest $
Qu'est-ce que la sortie d'erreur? Post que comme une partie de vous remettre en question.
Oui j'ai juste ajouté de la sortie d'erreur.
Veuillez voir le modifier dans ma réponse.
Oui j'ai juste ajouté de la sortie d'erreur.
Veuillez voir le modifier dans ma réponse.
OriginalL'auteur sinner | 2011-12-06
Vous devez vous connecter pour publier un commentaire.
Ou de l'utilisation pkg-config pour vous aider en remplissant les chemins et les bibliothèques:
Vous avez utilisé
'
pour délimiter le pkg-config trucs, et c'est suposed:`
ah bon maintenant j'obtiens ces erreurs mentionné dans mon post ci-dessus
Vous pouvez stop le fil en sélectionnant la réponse à votre question. Cliquez simplement sur la case à cocher près de la réponse pour le sélectionner comme officiel. Je crains que vous devrez attendre 48 heures avant d'être en mesure de choisir votre propre réponse que l'officiel.
Vous devez accepter la réponse de @karlphillip, pas le vôtre.
OriginalL'auteur karlphillip
Yay!!!!! Cette commande a fonctionné:
J'ai juste besoin d'ajouter le chemin de
opencv.pc
fichier dans le.profile (or .bash_profile)
qui est:Maintenant, je suis en train de compiler un fichier qui utilise
au lieu de
Je vais répondre rapidement si la même commande fonctionne ou non.
Merci beaucoup les gars pour tous les commentaires.
#include <opencv2/opencv.hpp>
Génial, content que je l'ai aidé à vous. C'est bien pratique pour upvote réponses que vous jugez utile pour résoudre le problème. Bonne chance.
OriginalL'auteur sinner
Vous êtes à proximité.
cvReleaseImage
est dans opencv_core. J'ai appris cela par la recherche decvReleaseImage
à http://opencv.itseez.com. Cela a fonctionné pour moi:Il doit travailler pour vous si vous modifiez
/usr
à/opt
.Edit:
Essayez de faire ce changement dans votre code source:
Je pense que le problème vient de la version de mis-match entre le tutoriel code et le OpenCV 2.3 que vous avez installés. Ils ont changé l'organisation du répertoire et les noms de bibliothèque.
Je l'ai essayé avant, mais il présente aussi ne fonctionne pas pour moi 🙁
Dans la ligne de
g++ example.cpp -o example -I /opt/local/include/opencv/ -L /opt/local/lib/ -lopencv_highgui -lopencv_calib3d -lopencv_legacy
vous n'avez pas inclure-lopencv_core
. Vous n'avez pas besoin-lopencv_legacy
ou-lopencv_calib3d
.Je viens de faire les changements recommandés, mais ça ne change rien 🙁
Si vous n'avez pas afficher les résultats de la compilation tentative il n'ya aucun moyen n'importe qui peut vous aider.
OriginalL'auteur SSteve