Anaconda虚拟环境中,让Python3使用ROS的cv_bridge
本文借鑒文章,但是該文存在致命性問題,所以博主另開一版,來講述如何在ubuntu16.04中安裝cv_bridge。
使用ROS的時候只用了C++,沒有發現cv_bridge這個坑,最近增加了一個使用pytorch的節點,為此使用Anaconda配置了一個只有Python3.5的環境,運行cv_bridge時出現報錯
from cv_bridge.boost.cv_bridge_boost import getCvType
 ImportError: dynamic module does not define module export function (PyInit_cv_bridge_boost)
其原因是出在ROS自帶的cv_bridge只支持python2,想要使用Python3需要自行編譯cv_bridge包,本人環境:Ubuntu 16.04+ROS +Anaconda3+Python3.5
具體步驟參考鏈接中的內容:
https://stackoverflow.com/questions/49221565/unable-to-use-cv-bridge-with-ros-kinetic-and-python3?rq=1
注意:上述鏈接中的操作要在系統的真實空間中,不要在conda建立的虛擬空間中操作!!!,另外以上參考的stackoverflow鏈接中,第二個回答沒有借鑒價值,看第二個回答卡了我很久
為了保證上述環境的正確性,最好新打開一個終端,并且運行conda deactivate命令,然后按照上述鏈接中的操作即可完成。
編譯cv_bridge包與使用依賴cv_bridge包的詳細步驟:
如果編譯過程中遇到下面的報錯:
編譯過程中,如果出現下面的報錯(目前好像vision_opencv導出來的boost是boost_python37):
CMake Error at /usr/share/cmake-3.6/Modules/FindBoost.cmake:1677 (message):Unable to find the requested Boost libraries.Boost version: 1.58.0Boost include path: /usr/includeCould not find the following Boost libraries:boost_python3No Boost libraries were found. You may need to set BOOST_LIBRARYDIR to thedirectory containing Boost libraries or BOOST_ROOT to the location ofBoost. Call Stack (most recent call first):CMakeLists.txt:11 (find_package)這是因為CMake試圖找到libboost_python3.so庫,但是在ubuntu中它是libboost_python-py35.so(/usr/lib/x86_64-linux-gnu/libboost_python-py35.so)。因此應該在文件src/vision_opencv/cv_bridge/CMakeLists.txt中將下面這行更改find_package()中的內容,更改為python-py35。然后再重新編譯:
 原始行:
更改成:
find_package(Boost REQUIRED python-py35)總結
以上是生活随笔為你收集整理的Anaconda虚拟环境中,让Python3使用ROS的cv_bridge的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 翡翠手链的起源和发展历史
 - 下一篇: 加油站问题