jupyter notebook 中报错 ModuleNotFoundError: No module named ‘cv2‘

8 篇文章 0 订阅
2 篇文章 2 订阅

说明:

  • 今天在使用conda 安装opencv 后,在cmd下正常import cv2

  • 但是进入Jupyter Notebook 后 import cv2 失败,报错ModuleNotFoundError: No module named 'cv2'

    cv2 fail

原因:

发现在conda下安装的包,在 Jupyter Notebook 里面却无法调用。

同时发现 Jupyter 的 Kernel 只有Python 3一个环境,不显示 conda create 我添加的其他环境,因此无法调用到当前环境下的cv包

所以解决 Kernel 问题。

1. 在Jupyter Notebook 中查看Kernel

如果你打开只有一个 Python 3 那个环境,说明你来对地方了。
kernel

问题解决:

查看Kernel
  • 使用下面命令查看当前所有可用的Kernel :

    jupyter kernelspec list
    kernel show

手动添加Kernel
  1. 安装ipykernel:
    conda install ipykernel
    
  2. 手动添加 Kernel
    python -m ipykernel install --name stm32 --display-name "stm32h7"
    
  • --name 被用于 Jupyter 内部,对应 第1步查询那里显示的名称,注意:该命令会覆盖具有相同名称的kernel

  • --display-name 在打开 Jupyter—Kernel—Change Kernel 里面显示的名称

    finined
    此时发现可以成功import cv2,这里一定要注意:所有的操作要在你当前的环境下使用,不要在(base)里安装opencv,却在其他环境里调用,那肯定是不行的!!!

其他:

  • 可以下面命令删除 Kernel
    jupyter kernelspec remove stm32

  • 查看当前环境的 Python 环境路径:

    import sys
    sys.executable
    
Anaconda 使用说明:

因为我使用的是Anaconda 创建了多个环境,所以针对新手有必要讲解下,懂的可以直接跳到

  1. conda create -n xxxx python==3.6 —— 创建一个名字叫xxx的环境,并为该环境安装 Python=3.6

  2. activate xxxxx —— 激活进入xxxx的环境

    当此时 命令行前面的(base)变为(xxxx)你创建的环境名就好了

  3. jupyter notebook —— 打开浏览器并进入Jupyter Notebook

    因为conda 可以支持多个环境并同时互不干扰,
    同时激活xxxx环境的情况下 进行第3部,你在Jupyter 中使用的包也只能使用当前xxxx环境下安装的包

    具体Anaconda使用,可以参考基于Anaconda安装不同版本的Python

  • 29
    点赞
  • 112
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
### 回答1: geometry_msgs是ROS的一个消息类型,它包含了几何形状的信息,例如点、向量、姿态等。具体来说,geometry_msgs包含了以下消息类型: 1. Point:表示三维空间的一个点,包含x、y、z三个分量。 2. Vector3:表示三维空间的一个向量,包含x、y、z三个分量。 3. Quaternion:表示四元数,用于表示姿态,包含x、y、z、w四个分量。 4. Pose:表示一个物体的位置和姿态,包含position(Point类型)和orientation(Quaternion类型)两个分量。 5. Twist:表示一个物体在三维空间的运动状态,包含linear(Vector3类型)和angular(Vector3类型)两个分量。 使用geometry_msgs可以方便地在ROS传输几何形状相关的信息。 ### 回答2: geometry_msgs是ROS的一个消息包,用于传递与几何相关的消息。它提供了一系列消息类型,包括点(Point)、向量(Vector3)、四元数(Quaternion)、位姿(Pose)、变换(Transform)等等。 点(Point)消息类型用于表示一个三维空间的点,其包括x、y、z三个坐标分量。 向量(Vector3)消息类型用于表示一个三维空间的向量,其包括x、y、z三个分量,可用于描述速度、加速度等。 四元数(Quaternion)消息类型用于表示三维空间的旋转,它使用四个分量(x、y、z、w)来描述。四元数可用于表示物体的姿态、方向等。 位姿(Pose)消息类型用于描述物体在三维空间的位置和姿态,包括位置信息和旋转信息。 变换(Transform)消息类型用于表示两个坐标系之间的变换关系,通常用于描述物体的运动、变换等。 除了上述常用的消息类型外,geometry_msgs还提供了一些其他的消息类型,如速度(Velocity)、加速度(Acceleration)等。 借助geometry_msgs,我们可以方便地在ROS系统传递与几何相关的信息。比如,我们可以将机器人的位姿信息发布到一个话题上,其他节点可以订阅该话题获取机器人的位置和姿态信息。这样,各个节点之间可以方便地实现协同工作,进行路径规划、避障、导航等任务。 总而言之,geometry_msgs是ROS的一个重要消息包,提供了丰富的几何相关消息类型,为机器人系统的开发和应用提供了便利。它使得节点之间的通信更加方便,有助于实现机器人的定位、导航、运动控制等功能。 ### 回答3: geometry_msgs是ROS(机器人操作系统)的一个消息类型,用于传递二维和三维几何信息。它是ROS常用的消息类型之一。 geometry_msgs定义了一些常用的几何消息,包括Point、Quaternion、Twist、Pose等。这些消息可用于描述机器人的位置、方向、速度等。 其,Point消息类型用于表示一个三维空间的点,可以记录其X、Y和Z坐标。 Quaternion消息类型用于表示一个四元数,主要用于描述旋转,可记录旋转角度和轴向。 Twist消息类型表示一个刚体的速度,包括线速度(即沿着X、Y和Z轴方向的速度分量)和角速度(绕X、Y和Z轴的旋转速度)。 Pose消息类型用于表示机器人在三维空间的位置和方向,它由一个Point消息和一个Quaternion消息组成。 geometry_msgs的使用非常广泛,特别是在机器人导航、定位和控制等领域。通过发布和订阅这些消息,机器人可以与其他ROS节点进行通信,实现相应的功能。 总的来说,geometry_msgs提供了一套用于表示和传输几何信息的标准消息类型,为ROS的机器人和系统提供了方便和统一的数据交换方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值