ROS python3使用cv_bridge报错,在melodic中使用python3 cv_bridge

2023-05-16

ROS cv_bridge报错:在melodic中使用python3+cv_bridge

  • 问题描述
  • 解决方案
  • 使用方法
  • 2022.7补充

问题描述

ROS与opencv之间的数据类型转换是通过cv_bridge这个包来实现的。melodic中默认使用python2,因此rospy的cv_bridge也默认是python2版本的。使用python3导入cv_bridge时会报这个错:

from cv_bridge.boost.cv_bridge_boost import getCvType
ImportError: dynamic module does not define module export function (PyInit_cv_bridge_boost)

解决方案

此时需要重新编译一个适用于Python3的cv_bridge包。

首先下载源码:

git clone https://github.com/ros-perception/vision_opencv.git

新建工作空间并把cv_bridge包放入:

mkdir -p vision_opencv_ws/src
cd vision_opencv_ws
mv -r ../vision_opencv src/

设置catkin编译使用的python3版本:

catkin config -DPYTHON_EXECUTABLE=/usr/bin/python3 -DPYTHON_INCLUDE_DIR=/usr/include/python3.6m -DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.6m.so

(可选)指定编译包后放入install文件夹中:

catkin config --install

编译:

catkin build

使用方法

在运行python3前,激活新编译好的cv_bridge环境:

source vision_opencv_ws/install/setup.bash

然后运行python代码就可以正常导入cv_bridge包了。

2022.7补充

如果系统中的opencv版本为4,则需要使用noetic版本的cv_bridge,即下载源码后要切换分支:

git clone https://github.com/ros-perception/vision_opencv.git
git checkout -b mynoetic origin/noetic

并且,要把CMakeLists.txt中的:

if(NOT ANDROID)
  find_package(PythonLibs)

  if(PYTHONLIBS_VERSION_STRING VERSION_LESS "3.8")
    # Debian Buster
    find_package(Boost REQUIRED python37)
  else()
    # Ubuntu Focal
    find_package(Boost REQUIRED python)
  endif()
else()

改为

if(NOT ANDROID)
  find_package(PythonLibs)

  if(PYTHONLIBS_VERSION_STRING VERSION_LESS "3.8")
    # Debian Buster
    find_package(Boost REQUIRED python3)
  else()
    # Ubuntu Focal
    find_package(Boost REQUIRED python)
  endif()
else()

然后再根据上面的步骤编译。

使用时,首先要修改系统的python环境变量,因为source /opt/ros/melodic/setup.bash会自动把ros python2.7 dist-packages添加到python路径中,import优先找的是python2的包,所以要把这个环境变量改掉:

unset PYTHONPATH
source vision_opencv_ws/install/setup.bash
source /opt/ros/melodic/setup.bash

这样就优先使用python3的cv_bridge了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROS python3使用cv_bridge报错,在melodic中使用python3 cv_bridge 的相关文章

  • python程序docker化部署

    启动docker systemctl start docker 启动docker systemctl enable docker 设置开机自启动docker systemctl status docker 查看docker状态 步骤 xff

随机推荐

  • 嵌入式(一)——MPU9250九轴学习

    加速度计对四轴或小车的加速度比较敏感 xff0c 取瞬时值计算倾角误差比较大 xff1b 而陀螺仪积分得到的角度不受小车加速的的影响 xff0c 但是随着时间的增加积分漂移和温度漂移带来的误差比较大 xff0c 所以这两个传感器正好可以弥补
  • jetson nano Docker化部署

    Docker安装 1 安装docker https docs docker com engine install ubuntu sudo apt get update sudo apt get install apt transport h
  • 钢筋盘点计数数据集图片展示

    数据集分为训练集和测试集 xff0c 其中训练集共有569张已标注图片 xff0c 测试集共有85张未标注图片 xff0c 共计654张 其图片质量与标注质量满足工业化生产实际需要 xff0c 质量保障 有需要的可以到我的资源中进行下载 x
  • Windows下使用pip安装包 出错 TLS/SSL

    Windows下使用pip安装包的时候出现如下问题 xff1a WARNING pip is configured with locations that require TLS SSL however the ssl module in
  • opencv模板匹配步骤及Code

    opencv模板匹配步骤及Code 首先介绍一下模板匹配的适用场景 xff1a 1 图像检索 2 目标跟踪 简单的说 xff0c 模板匹配最主要的功能就是在一幅图像中去寻找和另一幅模板图像中相似度最高的部分 xff0c 这就是模板匹配 比如
  • Tensorflow简单项目讲解

    Tensorflow简单项目讲解 转载请注明出处 xff1a https blog csdn net qq 41007606 article details 81906486 这里对Tensorflow就不在做具体介绍了 xff0c 直接切
  • Keras Model模型方法

    Model模型方法 compile compile self optimizer loss metrics 61 None loss weights 61 None sample weight mode 61 None weighted m
  • 关于Keras的“层”(Layer)——常用层

    所有的Keras层对象都有如下方法 xff1a layer get weights xff1a 返回层的权重 xff08 numpy array xff09 layer set weights weights xff1a 从numpy ar
  • Centos7 glibc库升级到2.23(实测可行)

    注意 xff1a Centos 为了稳定使用的glibc版本通常比较低 而安装有些程序需要依赖新版本 升级glibc需要慎重 xff0c 因很多人升级失败后导致系统不能用了 本人亲测 xff0c 升级了多台机器 xff0c 全部升级成功 g
  • [linux]wsl环境挂载window共享文件

    场景 xff1a 公司有一台内网的机器用来共享文件 xff0c 这里面的磁盘都是T级以上 xff0c 平时大家都是把文件存储到这台电脑上 xff0c 确保公司的资源安全 如果要用脚本来处理文件 xff0c 就需要挂载到内网的linux服务器
  • 最简单C/C++数据可视化函数库MathGL配置方法

    1 简介 xff1a MathGL是一个可用于C C 43 43 数据可视化的函数库 xff0c 可以对不同种类的数据进行可视化 由于MathGL本身不具有显示功能 xff0c 需要配合opencv以及其他可视化工具才能够显示图形 由于目前
  • 数学建模系列-优化模型---(一)规划模型

    数学建模中我们经常遇到的一种问题是给定一些条件 xff0c 目标是求得基于单或者多自变量的某个条件之的最优结果 一 线性规划模型 给定多个条件 xff0c 求某一个线性方程的最大值 xff08 对与这种问题 xff0c 我们一般采用的是最普
  • Linux----网络编程(相关名词概念)

    网络编程即编写通过计算机网络与其他程序进行通信的这类程序 相互通信的网络程序中 xff0c 一方称为客户程序 xff08 client xff09 xff0c 另一方称为服务器程序 server 计算机网络 xff08 简称网络 xff09
  • Python 列表参数 修改与赋值 对外部变量的影响

    两个函数 def test1 alist 对参数列表进行修改 alist 0 61 233 alist append 33 def test2 alist 对参数列表进行赋值 alist 61 9 5 1 10 调用结果 alist 61
  • APM配置

    开源飞控apm配置研究 项目介绍引言配置之前的文件准备我的配置过程配置文件链接小结 项目介绍 项目 xff1a 自动驾驶无人船 是老师的一个课题 xff0c 我们负责控制算法相关 当然 xff0c 也免不了要搬砖 做之前老师说 xff0c
  • python opencv实践 图像去畸变

    目录 前言镜头成像畸变原因去畸变方法python去畸变输入代码结果 前言 由于相机的镜头并不完全理想 xff0c 成像时会产生线条扭曲 失真等 对双目图像 鸟瞰图等进行处理时 xff0c 首先要矫正去畸变 镜头成像畸变原因 相机的镜头前有一
  • 通过直链下载google网盘里的文件

    目录 前言通过直链云下载保存在google drive的datasets 前言 科研学习的时候 xff0c 很多数据集是保存在google drive上的 xff0c 正常情况下国内打不开 xff0c 也就下载不了 于是我翻到了一个解决方法
  • 机器人建图算法2.1从栅格占据地图到ESDF地图

    机器人建图算法2 1从栅格占据地图到ESDF地图 前言论文解读示意图说明伪代码说明算法流程 总结 前言 最基础的地图是占据栅格地图Occupancy map xff0c 每个格子标明了该位置是否被物体占据 然而对于规划和避障而言 xff0c
  • 控制算法学习 一、卡尔曼滤波(1)以小车为例

    控制算法学习 一 卡尔曼滤波 xff08 1 xff09 以小车为例 前言线性系统状态方程和观测方程举例 卡尔曼滤波状态预测状态更新 卡尔曼滤波流程图 前言 卡尔曼滤波 xff08 Kalman Filter KF xff09 是最经典的传
  • ROS python3使用cv_bridge报错,在melodic中使用python3 cv_bridge

    ROS cv bridge报错 xff1a 在melodic中使用python3 43 cv bridge 问题描述解决方案使用方法2022 7补充 问题描述 ROS与opencv之间的数据类型转换是通过cv bridge这个包来实现的 m