прежде чем это будет помечено как повторяющийся вопрос, пожалуйста, прочитайте конец. Спасибо, что посмотрели.
Я установил openCV с помощью home- brew.
Это были команды, которые я использовал:
brew tap homebrew/science
brew install opencv
Я использую следующий простой файл, который я нашел онлайн, чтобы проверить мою настройку:
// Example showing how to read and write images
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
int main(int argc, char** argv)
{
// Load an image from file - change this based on your image name
Mat img = imread("my_image.jpg", CV_LOAD_IMAGE_UNCHANGED);
if(img.empty())
{
fprintf(stderr, "failed to load input image\n");
return -1;
}
// this is just to show, that you won't have to pre-alloc
// result-images with c++ any more..
Mat gray;
cvtColor(img,gray,CV_BGR2GRAY);
// Write the image to a file with a different name,
// using a different image format -- .png instead of .jpg
if( ! imwrite("my_image_copy.png", img) )
{
fprintf(stderr, "failed to write image file\n");
}
// no need to release anything with c++ !
return 0;
}
Это ошибка, которую я получаю после попытки скомпилировать и запустить suing g++ test.cpp -o test
.
Undefined symbols for architecture x86_64:
"cv::_InputArray::_InputArray(cv::Mat const&)", referenced from:
_main in test-41a30e.o
"cv::namedWindow(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int)", referenced from:
_main in test-41a30e.o
"cv::destroyWindow(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from:
_main in test-41a30e.o
"cv::Mat::deallocate()", referenced from:
cv::Mat::release() in test-41a30e.o
"cv::imread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int)", referenced from:
_main in test-41a30e.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 test-41a30e.o
"cv::waitKey(int)", referenced from:
_main in test-41a30e.o
"cv::fastFree(void*)", referenced from:
cv::Mat::~Mat() in test-41a30e.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Я нашел похожие проблемы при переполнении стека, но никто не использовал homebrew, и я не уверен, насколько чувствителен к времени (в отношении обновлений и изменений в OpenCV, моей ОС и т.д.) проблема. Я использую mac с ОС 10.9.4. И эти ответы мне не совсем поняли, что нужно изменить. Многие просто предложили одну строку кода, не сказав, куда должна идти линия. Я очень новичок в этих технологиях. Любая помощь будет очень благодарна!
Изменить: Марк Сетчелл помог с первой партией ошибок. Но теперь я получаю: g++ $(pkg-config --cflags --libs opencv) test.cpp -o Тест и. /Test
[3] 7187 dyld: библиотека не загружена: lib/libopencv_calib3d.2.4.dylib Ссылка из:/usr/local/Cellar/opencv/2.4.9/include/./Test Причина: изображение не найдено [2] Сделано g++ $(pkg-config --cflags --libs opencv) test.cpp -o Тест Trace/BPT trap: 5
brewdoctor дал мне это предупреждение:
Предупреждение: в вашем подвале у вас есть разблокированные бочонки
Если оставить неблокированные бочонки, это может привести к сбоям в работе и вызвать завихрения, зависящие от
эти бочонки не могут работать должным образом после постройки. Запустите brew link
на них:
opencv
Итак, я запустил ссылку brew --overwrite opencv, но получил следующее:
Linking /usr/local/Cellar/opencv/2.4.9...
Error: Could not symlink include/opencv/cv.h
нужна перезапись, потому что ссылка brew link opencv дала
Linking /usr/local/Cellar/opencv/2.4.9...
Error: Could not symlink include/opencv/cv.h
Target /usr/local/include/opencv/cv.h
already exists. You may want to remove it:
rm /usr/local/include/opencv/cv.h