Итак, задался я целью обновить opencv библиотеку........
Почему? Все очень просто, (далее то, как я понял проблему) то, что есть на данный момент после python-opencv установки - это старые файлы библиотек, помимо нововведений в более новых версиях, мы сталкиваемся с исходной проблемой создания приложений на базе этой библиотеки на разных языках, т.к. OpenCV была разработана на базе языков C\C++ то все структуры и т.д. имеют синтаксис этого языка, поэтому при использовании их в языке python, где нет указателей и прямой работы с памяти(чему радуются создатели библиотеки, рассказывая 1000 и 1 способ, как получить доступ к тому или иному участку памяти, занятому их великолепной структуркой) то мы сталкиваемся с проблемой передачи данных в эти структуры. Т.е. он не будет принимать массивы данных любого типа (а именно он не станет принимать ни список ни тьюпл). Вот так я пришел к желанию поставить новую версию библиотеки.
Для начала краткий список полезных ссылок ( периодически буду обновлять )
1. Особенности OpenCV на Python: http://opencv.willowgarage.com/documentation/python/cookbook.html
2. Выше разделом находится наша новая главная страница - документация библиотеки для питона:
http://opencv.willowgarage.com/documentation/python/index.html
3. Вкусняшки новых версий (надо же оправдать потраченное время):
http://opencv.willowgarage.com/wiki/OpenCV%20Change%20Logs
Далее выложу гайд для установки библиотеки, т.к. у меня вызвал не мало проблем (хотя теперь все кажется до смешного элементарным):
1 - нам необходимо удалить старую версию библиотеки, которая находится тут : /usr/lib/pyshared/python2.6/cv.so (т.к. при компиляции он будет сначала искать именно тут, и найдет старую версию, так и не дойдя до новой, наверняка как-то можно по-другому ему рассказать, что это плохой файлик и не стоит его грузить, но я сделал так)
3 - Загружаем библиотеку версии 2.2: http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.2/
4 - Далее создаем папку и заходим в нее:
mkdir release
cd release
5 - Выполняем следующую команду:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_PYTHON_SUPPORT=ON -D BUILD_EXAMPLES=ON ..
Затем:
make
sudo make install
6 - Ну и напоследок перемещаем созданный такими трудами файлик библиотеки в папку, где питон сможет его найти:
sudo mv /usr/local/lib/python2.6/site-packages/cv.so /usr/local/lib/python2.6/dist-packages/cv.so
Тадааам!!! у нас теперь обновленная версия, для использования функций теперь делаем так:
cv.NamedWindow() вместо cvNamedWindow, а библиотека подключается одной строчкой: import cv
Почему? Все очень просто, (далее то, как я понял проблему) то, что есть на данный момент после python-opencv установки - это старые файлы библиотек, помимо нововведений в более новых версиях, мы сталкиваемся с исходной проблемой создания приложений на базе этой библиотеки на разных языках, т.к. OpenCV была разработана на базе языков C\C++ то все структуры и т.д. имеют синтаксис этого языка, поэтому при использовании их в языке python, где нет указателей и прямой работы с памяти(чему радуются создатели библиотеки, рассказывая 1000 и 1 способ, как получить доступ к тому или иному участку памяти, занятому их великолепной структуркой) то мы сталкиваемся с проблемой передачи данных в эти структуры. Т.е. он не будет принимать массивы данных любого типа (а именно он не станет принимать ни список ни тьюпл). Вот так я пришел к желанию поставить новую версию библиотеки.
Для начала краткий список полезных ссылок ( периодически буду обновлять )
1. Особенности OpenCV на Python: http://opencv.willowgarage.com/documentation/python/cookbook.html
2. Выше разделом находится наша новая главная страница - документация библиотеки для питона:
http://opencv.willowgarage.com/documentation/python/index.html
3. Вкусняшки новых версий (надо же оправдать потраченное время):
http://opencv.willowgarage.com/wiki/OpenCV%20Change%20Logs
Далее выложу гайд для установки библиотеки, т.к. у меня вызвал не мало проблем (хотя теперь все кажется до смешного элементарным):
1 - нам необходимо удалить старую версию библиотеки, которая находится тут : /usr/lib/pyshared/python2.6/cv.so (т.к. при компиляции он будет сначала искать именно тут, и найдет старую версию, так и не дойдя до новой, наверняка как-то можно по-другому ему рассказать, что это плохой файлик и не стоит его грузить, но я сделал так)
2 - далее надо поставить тучу всяких библиотек и т.д.
apt-get install build-essential apt-get install cmake apt-get install pkg-config apt-get install libpng12-0 libpng12-dev libpng++-dev libpng3 apt-get install libpnglite-dev libpngwriter0-dev libpngwriter0c2 apt-get install zlib1g-dbg zlib1g zlib1g-dev apt-get install libjasper-dev libjasper-runtime libjasper1 apt-get install pngtools libtiff4-dev libtiff4 libtiffxx0c2 libtiff-tools apt-get install libjpeg8 libjpeg8-dev libjpeg8-dbg libjpeg-prog apt-get install ffmpeg libavcodec-dev libavcodec52 libavformat52 libavformat-dev apt-get install libgstreamer0.10-0-dbg libgstreamer0.10-0 libgstreamer0.10-dev apt-get install libxine1-ffmpeg libxine-dev libxine1-bin apt-get install libunicap2 libunicap2-dev apt-get install libdc1394-22-dev libdc1394-22 libdc1394-utils apt-get install swig apt-get install libv4l-0 libv4l-dev apt-get install python-numpy apt-get install libpython2.6 python-dev python2.6-dev apt-get install libgtk2.0-dev
3 - Загружаем библиотеку версии 2.2: http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.2/
4 - Далее создаем папку и заходим в нее:
mkdir release
cd release
5 - Выполняем следующую команду:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_PYTHON_SUPPORT=ON -D BUILD_EXAMPLES=ON ..
Затем:
make
sudo make install
6 - Ну и напоследок перемещаем созданный такими трудами файлик библиотеки в папку, где питон сможет его найти:
sudo mv /usr/local/lib/python2.6/site-packages/cv.so /usr/local/lib/python2.6/dist-packages/cv.so
Тадааам!!! у нас теперь обновленная версия, для использования функций теперь делаем так:
cv.NamedWindow() вместо cvNamedWindow, а библиотека подключается одной строчкой: import cv
Комментариев нет:
Отправить комментарий