2014-10-27 9 views
3

Я пытаюсь установить OpenCV в Ubuntu 14.10 согласно instruction. Я установил всю упомянутую зависимость, но когда я пытаюсь запустить make я получаю такие ошибки:Установка OpenCV в Ubuntu 14.10

/home/ilia/opencv-2.4.8/modules/highgui/src/ffmpeg_codecs.hpp:114:7: error: ‘CODEC_ID_H261’ was not declared in this scope 
{ CODEC_ID_H261, MKTAG('H', '2', '6', '1') } 

для всех кодеков, как я думаю. И эти ошибки:

In file included from /home/ilia/opencv-2.4.8/modules/highgui/src/cap_ffmpeg.cpp:45:0: 
/home/ilia/opencv-2.4.8/modules/highgui/src/cap_ffmpeg_impl.hpp: In member function ‘double CvCapture_FFMPEG::getProperty(int)’: 
/home/ilia/opencv-2.4.8/modules/highgui/src/cap_ffmpeg_impl.hpp:773:33: error: ‘AVStream’ has no member named ‘r_frame_rate’ 
     return av_q2d(video_st->r_frame_rate); 
           ^
/home/ilia/opencv-2.4.8/modules/highgui/src/cap_ffmpeg_impl.hpp: In member function ‘double CvCapture_FFMPEG::get_fps()’: 
/home/ilia/opencv-2.4.8/modules/highgui/src/cap_ffmpeg_impl.hpp:820:49: error: ‘AVStream’ has no member named ‘r_frame_rate’ 
    double fps = r2d(ic->streams[video_stream]->r_frame_rate); 
               ^
In file included from /home/ilia/opencv-2.4.8/modules/highgui/src/cap_ffmpeg.cpp:45:0: 
/home/ilia/opencv-2.4.8/modules/highgui/src/cap_ffmpeg_impl.hpp: In function ‘int icv_av_write_frame_FFMPEG(AVFormatContext*, AVStream*, uint8_t*, uint32_t, AVFrame*)’: 
/home/ilia/opencv-2.4.8/modules/highgui/src/cap_ffmpeg_impl.hpp:1236:72: error: ‘avcodec_encode_video’ was not declared in this scope 
     out_size = avcodec_encode_video(c, outbuf, outbuf_size, picture); 
                     ^ 

Похоже, что не может найти некоторые файлы заголовки, но я установил все необходимые Dev пакеты libswscale-DEV, libavdevice-DEV, libavfilter-разработчик, libavformat-DEV, кодек-DEV , Что я должен сделать для решения этих проблем?

+0

в Ubuntu 14.10, libav использует версию API 11. OpenCV по-прежнему использует API версии 9, содержащийся в Ubuntu 14.04 LTS. Я думаю, что они должны предоставить патч для него – madduci

ответ

2

Если у вас нет особых причин я хотел бы предложить установку OpenCV, которые уже в репозитории Ubuntu: sudo apt-get install libopencv-dev

Для видеокодеков я предлагаю просто пытаюсь установить все FFmpeg и GStreamer связанных пакетов кодеков.

+1

Спасибо. Это было намного легче, чем я думал. – Ilia

+3

ну, это не решение. Особенно если кто-то требует Qt, CUDA, OpenNI. – madduci

+0

Я использую Qt, и все работает. – Ilia

16

Установка OpenCV из репозиториев Ubuntu является хорошим выбором для большинства случаев, но иногда вам нужно самостоятельно создавать OpenCV из исходников.

Например, если вам нужна бесплатная функция OpenCV или вы хотите внести свой вклад в этот проект (вы должны использовать последнюю версию для создания запроса на растяжение) или хотите что-то изменить (да, OpenCV также может содержать ошибки) ,

Возможное решение - построить ffmpeg (это довольно просто) - я действительно не понимаю, почему Debian/Ubuntu предпочитает libav без альтернативы.

Для установки FFmpeg вы должны загрузить свои источники из official site или клон репозитория GIT (мерзавец: //source.ffmpeg.org/ffmpeg.git), затем введите исходный каталог и запустить

./configure - -enable-общий повреждают статическую
сделать
Sudo сделать установку

вы можете также добавить другие параметры configure. Вы также можете создавать статические библиотеки, но OpenCV не может быть создан со статическими библиотеками ffmpeg (теперь я не знаю почему).

После этого вы можете загрузить исходные OpenCV из OpenCV site или клонировать GitHub хранилище (OpenCV repository), создать папку сборки и запустить из него следующее:

CMake PATH_TO_SOURCES -DCMAKE_BUILD_TYPE = Release
сделать
SUDO макияж install

Конечно, PATH_TO_SOURCES должен быть действительным путем к источникам OpenCV.

После этих шагов у вас работает последняя сборка OpenCV в вашей системе.

+0

Здание ffmpeg из источников вместо использования libav работало для меня. – afenster

+0

Это именно то, что я предложил в своем ответе – avtomaton

+0

У меня появилось это сообщение: «Хорошо ли меня слышать? гиазм/nasm не найден или слишком старый. Используйте --disable-yasm для искалеченной сборки. @avtomaton – MAS

3

Вы можете попробовать построить без FFmpeg:

cmake -DCMAKE_BUILD_TYPE=RELEASE -DWITH_FFMPEG=OFF .. 
make 
sudo make install 
+0

Без ffmpeg вы, возможно, получите версию без чтения и записи видео - это нормально, только если вы не используете их в своих проектах – avtomaton

Смежные вопросы