ROS1下不能使用Python3.4使用cv_bridge

因为毕业设计要求在ROS1下运行Python3环境下的MaskRCNN,虽然在Anaconda下跑通了DEMO,但是我发现在PYTHON3.4环境下rosrun我读取摄像头的python程序就会报错

Traceback (most recent call last):
  File "/home/asber/catkin_ws/src/my_image_transport/scripts/my_publisher.py", line 16, in <module>
    from cv_bridge import CvBridge, CvBridgeError
ImportError: No module named 'cv_bridge'

我们按照这里说的小心谨慎的实验一下:

cd /opt/ros/kinetic/lib/python2.7/dist-packages
sudo mv cv2.so cv2_ros.so

移除之前的boost
之前我的usr/local里面有1.66 py2版本的boost
root@asber-X550VX:/usr/local/include# mv boost boost.bak2
root@asber-X550VX:/usr/local/lib# mkdir libboost2
root@asber-X550VX:/usr/local/lib# mv libboost* libboost2
构建针对 python3 的 boost 库
参考:

  1. boost编译libboost_python3
  2. 基于python3.6的libboost库安装(用于anaconda3安装caffe)

./bootstrap.sh --with-python=/home/asber/Document/anaconda2/envs/maskrcnn/bin/python3 --with-python-root=/home/asber/Document/anaconda2/envs/maskrcnn/lib/python3.4 --with-python-version=3.4 --with-libraries=python --with-toolset=gcc

./b2 --with-python inclu

ROS (Robot Operating System) 中,`cv_bridge`是一个非常有用的库,它允许在ROS节点之间处理OpenCV (计算机视觉库) 和ROS的标准消息格式之间的转换。如果你想在CMakeLists.txt文件中添加对`cv_bridge`的支持以便构建包含它的项目,可以按照以下步骤操作: 1. **添加依赖**: 首先,你需要将`cv_bridge`作为项目的直接依赖添加到CMakeLists.txt中。如果使用ROS Noetic及以后的版本,通常会自动包含这个包,但在某些早期版本中需要手动指定。例如: ```cmake find_package(cv_bridge REQUIRED) ``` 2. **链接库**: 确保在target_link_libraries部分链接`cv_bridge`及其所需的OpenCV和其他依赖库,例如: ```cmake target_link_libraries(your_target ${catkin_LIBRARIES} cv_bridge ${OpenCV_LIBS}) ``` `your_target` 应替换为你实际的目标名称。 3. **包含头文件**: 在source_files列表中添加使用`cv_bridge`功能的源文件,并确保包含必要的头文件: ```cmake add_executable(your_node src/your_node.cpp) include_directories(include/${PROJECT_NAME}) include_directories(include/opencv2) include_directories(include/cv_bridge) ``` 这里假设src/your_node.cpp是你的源文件,并且`include`目录下有相关的头文件。 4. **运行时设置**: 如果你的程序需要在运行时动态加载`cv_bridge`,可能会用到`find_packageroviz REQUIRED`)这样的指令,因为`cv_bridge`默认会在`roscpp`包中查找。 完整的例子可能是这样的: ```cmake # ...其他CMake配置... find_package(catkin REQUIRED COMPONENTS roscpp std_msgs image_transport cv_bridge) add_executable(your_node src/your_node.cpp) catkin_package( INCLUDE_DIRS include LIBRARIES your_node CATKIN_DEPENDS roscpp std_msgs image_transport cv_bridge ) target_link_libraries(your_node ${catkin_LIBRARIES} cv_bridge ${OpenCV_LIBS}) # 如果你需要在运行时动态加载... if(BUILD_SHARED_LIBS) find_package(rostest REQUIRED) add_rostest(tests your_test src/your_test.cpp DEPENDENCIES your_node) endif() ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值