Впервые я не могу скомпилировать мир привет. Я следил за тоннами учебников, как установить opencv. я просто следующий пример:Компиляция мира привет с opencv C++ на mac os x sierra
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat imageMe = imread("test.jpg", 0);
return 0;
}
с сайта OpenCV. Выглядит прямо, но он не будет компилироваться.
g++ display_image.cpp `pkg-config --cflags --libs opencv` -l
Вот ошибка:
display_image.cpp:2:10: fatal error: 'opencv2/core/core.hpp' file not found
#include <opencv2/core/core.hpp>
^
1 error generated.
И работает:
pkg-config --cflags --libs opencv
возвращение этого:
-I/usr/local/Cellar/opencv3/3.2.0/include/opencv -I/usr/local/Cellar/opencv3/3.2.0/include/opencv2 -L/usr/local/Cellar/opencv3/3.2.0/lib -lopencv_calib3d -lopencv_imgproc -lopencv_contrib -lopencv_legacy -l
эти файлы присутствуют.
Запуск ls /usr/local/Cellar/opencv3/3.2.0/include/opencv2/core | grep core.hpp
дает результат:
core.hpp
В чем проблема?
редактировать: Я использую следующие обучающие программы, чтобы установить OpenCV на моей машине:
http://www.pyimagesearch.com/2016/12/19/install-opencv-3-on-macos-with-homebrew-the-easy-way/
https://www.learnopencv.com/install-opencv-3-on-yosemite-osx-10-10-x/
https://blogs.wcode.org/2014/10/howto-install-build-and-use-opencv-macosx-10-10/
http://seeb0h.github.io/howto/howto-install-homebrew-python-opencv-osx-el-capitan/
редактирования:
Даже после всех этих ответов я не могу скомпилировать одно приложение. Даже если он каким-то образом может найти файл .hpp, который напрямую включен в мой файл, он не находит внутри.
Возможно, моя конфигурация неверна. В/USR/местные/Cellar/opencv3 У меня есть 2 директории: 3.2.0 - вероятно, установлены бинарные файлы ГОЛОВОЙ 9053839 - составленный из источника
Теперь у меня есть opencv.pc файл, расположенный в/USR/местные/Библиотека/pkg-config:
prefix=/usr/local/Cellar/opencv3/3.2.0
exec_prefix=${prefix}
includedir=${prefix}/include
libdir=${exec_prefix}/lib
Name: opencv
Description: The opencv library
Version: 2.x.x
Cflags: -I${includedir}/opencv -I${includedir}/opencv2
Libs: -L${libdir} -lopencv_calib3d -lopencv_imgproc -lopencv_contrib -lopencv_legacy -l
в приставке я также попытался ГОЛОВОЙ 9053839.
Я создал еще проще пример:
#include <opencv2/opencv.hpp>
int main(){return 0; }
Это все еще говорил мне, что файл 'opencv2/opencv.hpp' не найден. Тогда я напечатал, что PKG-конфигурации говорит: PKG-конфигурации --cflags --libs OpenCV
-I/usr/local/Cellar/opencv3/3.2.0/include/opencv -I/usr/local/Cellar/opencv3/3.2.0/include/opencv2 -L/usr/local/Cellar/opencv3/3.2.0/lib -lopencv_calib3d -lopencv_imgproc -lopencv_contrib -lopencv_legacy -l
И выяснил, что это лучше должно быть непосредственно включать реж, не OpenCV/opencv2 подкаталоги.
Так что я побежал г ++ так:
g++ -I/usr/local/Cellar/opencv3/3.2.0/include -L/usr/local/Cellar/opencv3/3.2.0/lib -lopencv_calib3d -lopencv_imgproc -lopencv_contrib -lopencv_legacy -l display_image.cpp
Тогда сказал мне:
ld: library not found for -lopencv_contrib
После его удаления он сказал:
ld: library not found for -lopencv_legacy
Тогда я должен был удалить -l перед display_image.cpp, но потом у меня есть еще одна ошибка:
Undefined symbols for architecture x86_64:
"cv::String::deallocate()", referenced from:
cv::String::~String() in display_image-9d8f86.o
cv::String::operator=(cv::String const&) in display_image-9d8f86.o
Это ад.
Я обычно всегда ставлю '-I directives' перед определением исходного файла, я всегда думал, порядок имеет смысл, вы могли бы попробовать? –
Тот же результат. – Makalele
Вы использовали 'opencv2' как refix в своих включении ... Удалите его. –