Невозможно сделать OpenCV - PullRequest
       15

Невозможно сделать OpenCV

3 голосов
/ 14 сентября 2011

Я скачал OpenCV 2.3.1 с веб-сайта OpenCV и распаковал его на /usr/share/src. Я запустил sudo cmake . в этой папке, чтобы сгенерировать файлы make, а затем запустил "sudo make". Я получаю следующую ошибку:

[20%] Строительство объекта CXX Модули / highgui / CMakeFiles / opencv_highgui.dir / SRC / loadsave.o

/ USR / доли / SRC / OpenCV-2.3.1 / модули / highgui / SRC / loadsave.cpp: 298: ошибка: InputArray не был объявлен

/ usr / share / src / OpenCV-2.3.1 / modules / highgui / src /loadave.cpp: In функция ‘bool cv :: imwrite (const std :: string &, int, const std :: vector> &) ’:

/ USR / доли / SRC / OpenCV-2.3.1 / модули / highgui / SRC / loadsave.cpp: 301: ошибка: запрос на член "getMat" в "_img", который не является классом введите "int"

/ usr / share / src / OpenCV-2.3.1 / modules / highgui / src /loadave.cpp: In функция void * cv :: imdecode_ (const cv :: Mat &, int, int, cv :: Mat *) ’:

/ USR / доли / SRC / OpenCV-2.3.1 / модули / highgui / SRC / loadsave.cpp: 312: ошибка: «tempfile» не был объявлен в этой области

/ usr / share / src / OpenCV-2.3.1 / modules / highgui / src /loadave.cpp: At глобальный охват:

/ USR / доли / SRC / OpenCV-2.3.1 / модули / highgui / SRC / loadsave.cpp: 392: ошибка: ‘cv :: Mat cv :: imdecode’ объявлен как символ другого типа

/ opt / local / include / opencv2 / highgui / highgui.hpp: 107: ошибка: предыдущая объявление ‘cv :: Mat cv :: imdecode (const cv :: Mat &, int)’

/ USR / доли / SRC / OpenCV-2.3.1 / модули / highgui / SRC / loadsave.cpp: 392: ошибка: InputArray не был объявлен в этой области

/ USR / доли / SRC / OpenCV-2.3.1 / модули / highgui / SRC / loadsave.cpp: 392: ошибка: ожидаемое первичное выражение до 'int'

/ USR / доли / SRC / OpenCV-2.3.1 / модули / highgui / SRC / loadsave.cpp: 399: ошибка: InputArray не был объявлен

/ usr / share / src / OpenCV-2.3.1 / modules / highgui / src /loadave.cpp: In функция ‘bool cv :: imencode (const std :: string &, int, std :: vector> &, const std :: vector> &) ’:

* +1032 * / USR / доли / SRC / OpenCV-2.3.1 / модули / highgui / SRC / loadsave.cpp: 402: ошибка: запрос на член "getMat" в "_image", который не является классом введите "int"

/ USR / доли / SRC / OpenCV-2.3.1 / модули / highgui / SRC / loadsave.cpp: 427: ошибка: «tempfile» не был объявлен в этой области

make [2]: * [modules / highgui / CMakeFiles / opencv_highgui.dir / src /loadave.o] Ошибка 1

make [1]: * [modules / highgui / CMakeFiles / opencv_highgui.dir / all] Ошибка

Почему это? Как я могу это исправить? Спасибо

Полная ошибка выглядит следующим образом:

make[2]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/src/window.o] Error 1
make[2]: *** Waiting for unfinished jobs....
In file included from /usr/share/src/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg.cpp:45:
/usr/share/src/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp: In member function ‘bool CvCapture_FFMPEG::grabFrame()’:
/usr/share/src/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:638: warning: ‘avcodec_decode_video’ is deprecated (declared at /opt/local/include/libavcodec/avcodec.h:3454)
/usr/share/src/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:640: warning: ‘avcodec_decode_video’ is deprecated (declared at /opt/local/include/libavcodec/avcodec.h:3454)
/usr/share/src/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp: In member function ‘bool CvVideoWriter_FFMPEG::open(const char*, int, double, int, int, bool)’:
/usr/share/src/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:1339: warning: ‘guess_format’ is deprecated (declared at /opt/local/include/libavformat/avformat.h:789)
/usr/share/src/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:1339: warning: ‘guess_format’ is deprecated (declared at /opt/local/include/libavformat/avformat.h:789)
/usr/share/src/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:1367: warning: ‘av_alloc_format_context’ is deprecated (declared at /opt/local/include/libavformat/avformat.h:947)
/usr/share/src/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:1367: warning: ‘av_alloc_format_context’ is deprecated (declared at /opt/local/include/libavformat/avformat.h:947)
/usr/share/src/OpenCV-2.3.1/modules/highgui/src/loadsave.cpp:298: error: ‘InputArray’ has not been declared
/usr/share/src/OpenCV-2.3.1/modules/highgui/src/loadsave.cpp: In function ‘bool cv::imwrite(const std::string&, int, const std::vector<int, std::allocator<int> >&)’:
/usr/share/src/OpenCV-2.3.1/modules/highgui/src/loadsave.cpp:301: error: request for member ‘getMat’ in ‘_img’, which is of non-class type ‘int’
/usr/share/src/OpenCV-2.3.1/modules/highgui/src/loadsave.cpp: In function ‘void* cv::imdecode_(const cv::Mat&, int, int, cv::Mat*)’:
/usr/share/src/OpenCV-2.3.1/modules/highgui/src/loadsave.cpp:312: error: ‘tempfile’ was not declared in this scope
/usr/share/src/OpenCV-2.3.1/modules/highgui/src/loadsave.cpp: At global scope:
/usr/share/src/OpenCV-2.3.1/modules/highgui/src/loadsave.cpp:392: error: ‘cv::Mat cv::imdecode’ redeclared as different kind of symbol
/opt/local/include/opencv2/highgui/highgui.hpp:107: error: previous declaration of ‘cv::Mat cv::imdecode(const cv::Mat&, int)’
/usr/share/src/OpenCV-2.3.1/modules/highgui/src/loadsave.cpp:392: error: ‘InputArray’ was not declared in this scope
/usr/share/src/OpenCV-2.3.1/modules/highgui/src/loadsave.cpp:392: error: expected primary-expression before ‘int’
/usr/share/src/OpenCV-2.3.1/modules/highgui/src/loadsave.cpp:399: error: ‘InputArray’ has not been declared
/usr/share/src/OpenCV-2.3.1/modules/highgui/src/loadsave.cpp: In function ‘bool cv::imencode(const std::string&, int, std::vector<unsigned char, std::allocator<unsigned char> >&, const std::vector<int, std::allocator<int> >&)’:
/usr/share/src/OpenCV-2.3.1/modules/highgui/src/loadsave.cpp:402: error: request for member ‘getMat’ in ‘_image’, which is of non-class type ‘int’
/usr/share/src/OpenCV-2.3.1/modules/highgui/src/loadsave.cpp:427: error: ‘tempfile’ was not declared in this scope
make[2]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/src/loadsave.o] Error 1
make[1]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/all] Error 2

Ответы [ 2 ]

3 голосов
/ 14 сентября 2011

Попробуйте инструкции в Используйте CMake для сборки в разделе 2 вики :

mkdir build
cd build
cmake -G "Unix Makefiles" ..
make -j8
sudo make install
2 голосов
/ 18 сентября 2011

Возможно, у вас конфликт с более ранней установкой MacPorts. Run:

port installed opencv

Если это находит другую версию opencv, тогда используйте:

sudo port deactivate opencv

Затем снова запустите make.

Примечание: он будет тормозить все, что было в зависимости от вашей предыдущей установки портов opencv. Поэтому вам нужно снова активировать старый или настроить зависимости для использования 2.3.1.

...