欢迎大家关注笔者,你的关注是我持续更博的最大动力

原创文章,转载告知,盗版必究

解决错误:No module named 'Cryptodome' 和错误rosbag.bag.ROSBagException: unsupported compression type: lz4

文章目录:

  • 1 说明遇到问题的场景
  • 2 解决错误:No module named 'Cryptodome'
  • 3 解决错误:rosbag.bag.ROSBagException: unsupported compression type: lz4
    • 3.1 尝试解决方式一
    • 3.2 尝试解决方式二
    • 3.3 最终的问题解决方法
    • 3.4 解决错误:ImportError: dynamic module does not define module export function (PyInit_cv_bridge_boost)
  • 4 两种提取雷达数据包中图片的方式
    • 4.1 使用roslaunch提取雷达数据包中的图片
    • 4.2 使用python库包rogbag、cv_bridge、cv2提取
    • 4.3 两种提取雷达数据包中图片的结果对比

1 说明遇到问题的场景

我的目的是:

  • 提取雷达数据包:2020-08-04-16-22-48.bag中的图片数据
  • 使用python库包:rosbag、cv2、cv_bridge进行提取工作

提取代码如下:

import rosbag
import cv2
from cv_bridge import CvBridgebag_file = '/home/shl/2020-08-04-16-22-48.bag'
bag = rosbag.Bag(bag_file, "r")bridge = CvBridge()
bag_data_imgs = bag.read_messages('/ns1/usb_cam/image_raw')def extract_imgs():i = 1for topic, msg, t in bag_data_imgs:cv_image = bridge.imgmsg_to_cv2(msg, "bgr8")print(type(cv_image))  # <type 'numpy.ndarray'>#cv2.imshow("Image window", cv_image)#cv2.waitKey(3)cv2.imwrite("./extract_images/%05d.png".format(i), cv_image)i+=1if __name__ == '__main__':extract_imgs()

2 解决错误:No module named ‘Cryptodome’

1、程序运行后报错:ModuleNotFoundError: No module named 'Cryptodome'

解决方式:

pip install pycryptodomex

2、后面可能又报错:ModuleNotFoundError: No module named 'gnupg'

解决方式:

pip install gnupg

3 解决错误:rosbag.bag.ROSBagException: unsupported compression type: lz4

1、上面的两个错误刚解决,运行程序之后又报错:rosbag.bag.ROSBagException: unsupported compression type: lz4

(yolov4) shl@zhihui-mint:~/extract_rosbag_data$ python extract_bag_images.py
Failed to load Python extension for LZ4 support. LZ4 compression will not be available.
Traceback (most recent call last):File "extract_bag_images.py", line 24, in <module>extract_imgs()File "extract_bag_images.py", line 14, in extract_imgsfor topic, msg, t in bag_data_imgs:File "/opt/ros/melodic/lib/python2.7/dist-packages/rosbag/bag.py", line 2699, in read_messagesyield self.seek_and_read_message_data_record((entry.chunk_pos, entry.offset), raw, return_connection_header)File "/opt/ros/melodic/lib/python2.7/dist-packages/rosbag/bag.py", line 2833, in seek_and_read_message_data_recordraise ROSBagException('unsupported compression type: %s' % chunk_header.compression)
rosbag.bag.ROSBagException: unsupported compression type: lz4
(yolov4) shl@zhihui-mint:~/extract_rosbag_data$

3.1 尝试解决方式一

错误信息:无法加载LZ4支持的Python扩展。 LZ4压缩将不可用,这里说这是由于ROS库造成的问题,但遇到的只是警告,我这里直接是错误,用处也不是很大

尝试解决方式1(无效):

pip install lz4

3.2 尝试解决方式二

1、我先使用rosbag查看一下bag文件的一些信息:

rosbag info 2020-08-04-16-22-48.bag

(base) shl@zhihui-mint:~/extract_rosbag_data$ rosbag info 2020-08-04-16-22-48.bag
path:         2020-08-04-16-22-48.bag
version:      2.0
duration:     5:14s (314s)
start:        Aug 04 2020 16:22:49.08 (1596529369.08)
end:          Aug 04 2020 16:28:03.36 (1596529683.36)
size:         6.8 GB
messages:     7439
compression:  lz4 [3126/3126 chunks; 84.80%]
uncompressed: 8.0 GB @ 26.2 MB/s
compressed:   6.8 GB @ 22.2 MB/s (84.80%)
types:        sensor_msgs/Image       [060021388200f6f0f447d0fcd9c64743]sensor_msgs/PointCloud2 [1158d486dd51d683ce2f1be655c3c181]
topics:       /ns1/usb_cam/image_raw   3125 msgs    : sensor_msgs/Image      /radar_projection        4314 msgs    : sensor_msgs/PointCloud2
(base) shl@zhihui-mint:~/extract_rosbag_data$

从上面可以看到2020-08-04-16-22-48.bag的压缩方式是:lz4

2、如果我们尝试把2020-08-04-16-22-48.bag解压后,再读取看是否有问题

rosbag decompress 2020-08-04-16-22-48.bag --output-dir ./extract_images/

3、让我们再来看一下解压后的bag文件的信息:


(base) shl@zhihui-mint:~/extract_rosbag_data/extract_images$ rosbag info 2020-08-04-16-22-48.bag
path:        2020-08-04-16-22-48.bag
version:     2.0
duration:    5:14s (314s)
start:       Aug 04 2020 16:22:49.08 (1596529369.08)
end:         Aug 04 2020 16:28:03.36 (1596529683.36)
size:        8.0 GB
messages:    7439
compression: none [3126/3126 chunks]
types:       sensor_msgs/Image       [060021388200f6f0f447d0fcd9c64743]sensor_msgs/PointCloud2 [1158d486dd51d683ce2f1be655c3c181]
topics:      /ns1/usb_cam/image_raw   3125 msgs    : sensor_msgs/Image      /radar_projection        4314 msgs    : sensor_msgs/PointCloud2
(base) shl@zhihui-mint:~/extract_rosbag_data/extract_images$

4、然后再读取一次,结果又报错:ImportError: dynamic module does not define module export function (PyInit_cv_bridge_boost)


(base) shl@zhihui-mint:~/extract_rosbag_data$ python extract_bag_images.py
Failed to load Python extension for LZ4 support. LZ4 compression will not be available.
Traceback (most recent call last):File "extract_bag_images.py", line 24, in <module>extract_imgs()File "extract_bag_images.py", line 15, in extract_imgscv_image = bridge.imgmsg_to_cv2(msg, "bgr8")File "/opt/ros/melodic/lib/python2.7/dist-packages/cv_bridge/core.py", line 163, in imgmsg_to_cv2dtype, n_channels = self.encoding_to_dtype_with_channels(img_msg.encoding)File "/opt/ros/melodic/lib/python2.7/dist-packages/cv_bridge/core.py", line 99, in encoding_to_dtype_with_channelsreturn self.cvtype2_to_dtype_with_channels(self.encoding_to_cvtype2(encoding))File "/opt/ros/melodic/lib/python2.7/dist-packages/cv_bridge/core.py", line 91, in encoding_to_cvtype2from cv_bridge.boost.cv_bridge_boost import getCvType
ImportError: dynamic module does not define module export function (PyInit_cv_bridge_boost)
(base) shl@zhihui-mint:~/extract_rosbag_data$

这篇博客给出了一种这种问题的解决方法

3.3 最终的问题解决方法

最终我解决问题的方式是:

  • 还是用之前使用lz4压缩方式的2020-08-04-16-22-48.bag 文件
  • 但是运行的时候使用python2即可!这是因为python3不支持采用LZ4 压缩的bag包
  • 饶了一大圈,结果就是起点出了问题,FK!

正确的运行命令:

python2 extract_bag_images.py

3.4 解决错误:ImportError: dynamic module does not define module export function (PyInit_cv_bridge_boost)

后面我尝试了没有压缩的bag包文件,依然报错:ImportError: dynamic module does not define module export function (PyInit_cv_bridge_boost) ,这个错误主要是由于cv_bridge 库包对于python3中不兼容!

解决问题参考:

  • stack overflow
  • Xavier AGX

4 两种提取雷达数据包中图片的方式

4.1 使用roslaunch提取雷达数据包中的图片

建立export.launch文件, 文件内容如下:

<launch><node pkg="rosbag" type="play" name="rosbag" args="-d 2 /home/jhc/2020-08-04-16-22-48.bag"/><node name="extract" pkg="image_view" type="extract_images" respawn="false" output="screen" cwd="ROS_HOME"><remap from="image" to="/ns1/usb_cam/image_raw"/></node></launch>

其中:

  • /home/jhc/2020-08-04-16-22-48.bag:是要解析的.bag文件的路径
  • /ns1/usb_cam/image_raw:是.bag文件中图片所在的位置

下面是提取图片的步骤
1、打开终端运行

roscore

2、再新建一个终端,使用roslaunch运行刚刚新建的export.launch文件

roslaunch export.launch

jhc@jhc-Default-string:~$ roslaunch export.launch
... logging to /home/jhc/.ros/log/7cd4fadc-0eb8-11eb-a4b8-0002a000179a/roslaunch-jhc-Default-string-8501.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.started roslaunch server http://jhc-Default-string:40787/SUMMARY
========PARAMETERS* /rosdistro: kinetic* /rosversion: 1.12.16NODES/extract (image_view/extract_images)rosbag (rosbag/play)ROS_MASTER_URI=http://localhost:11311process[rosbag-1]: started with pid [8519]
process[extract-2]: started with pid [8520]
[ INFO] [1602760999.375392392]: Initialized sec per frame to 0.100000
[ INFO] [1602761001.578548030]: Saved image frame0000.jpg
[ INFO] [1602761001.768274749]: Saved image frame0001.jpg
[ INFO] [1602761001.975395623]: Saved image frame0002.jpg
[ INFO] [1602761002.164784906]: Saved image frame0003.jpg
[ INFO] [1602761002.265436061]: Saved image frame0004.jpg
[ INFO] [1602761002.373386619]: Saved image frame0005.jpg
[ INFO] [1602761002.565808322]: Saved image frame0006.jpg
[ INFO] [1602761002.669046955]: Saved image frame0007.jpg......
[ INFO] [1602755793.105539345]: Saved image frame2021.jpg
[ INFO] [1602755793.213051297]: Saved image frame2022.jpg
[ INFO] [1602755793.411856603]: Saved image frame2023.jpg
[ INFO] [1602755793.616882581]: Saved image frame2024.jpg
[ INFO] [1602755793.719490581]: Saved image frame2025.jpg
[ INFO] [1602755793.918996288]: Saved image frame2026.jpg
[rosbag-1] process has finished cleanly
log file: /home/jhc/.ros/log/7cd4fadc-0eb8-11eb-a4b8-0002a000179a/rosbag-1*.log

解析的图片在home下的 .ros目录里,你可以移动到你想存放的目录中!

4.2 使用python库包rogbag、cv_bridge、cv2提取

代码如下:

import rosbag
import cv2
from cv_bridge import CvBridge#bag_file = './extract_images/2020-08-04-16-22-48.bag'
bag_file = './2020-08-04-16-22-48.bag'
bag = rosbag.Bag(bag_file, "r")bridge = CvBridge()
bag_data_imgs = bag.read_messages('/ns1/usb_cam/image_raw')def extract_imgs():i = 1for topic, msg, t in bag_data_imgs:cv_image = bridge.imgmsg_to_cv2(msg, "bgr8")print(type(cv_image))  # <type 'numpy.ndarray'>#cv2.imshow("Image window", cv_image)#cv2.waitKey(3)cv2.imwrite("./extract_images/%05d.png" % i, cv_image)i+=1if __name__ == '__main__':extract_imgs()

4.3 两种提取雷达数据包中图片的结果对比

提取方式 共提取帧数量 提取视频帧的大小 合成视频时长 合成视频帧率 合成视频分辨率
直接使用roslaunch 1966 1280x720 00:01:18 25 1280x720
使用python库包cv_bridge 3125 1280x720 00:02:05 25 1280x720

注意:

图片序列合成视频ffmpeg -f image2 -i %05d.png composition.mp4






♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠

解决错误:No module named ‘Cryptodome‘ 和错误rosbag.bag.ROSBagException: unsupported compression type: lz4相关推荐

  1. 解决ModuleNotFoundError: No module named ‘numpy.core._multiarray_umath‘ 错误

    解决ModuleNotFoundError: No module named 'numpy.core._multiarray_umath' 错误 文章目录: 一.错误原因分析 二.解决方式 调试了好久 ...

  2. python导入pyecharts错误没有pyecharts_python报No module named 'pyecharts'的错误怎么办?

    问:导包的时候报No module named 'pyecharts'的错误怎么办? 答:报上述错误一般是因为pyecharts这个包没有下载成功,下面给大家介绍一下pyecharts库的安装与使用方 ...

  3. 用python使用py2neo时候报“ModuleNotFoundError:No module named 'py2neo'”的错误

    用python使用py2neo时候报"ModuleNotFoundError:No module named 'py2neo'"的错误. 1 首先cmd里面输入"py2n ...

  4. 成功解决ModuleNotFoundError: No module named ‘sklearn.lda‘

    成功解决ModuleNotFoundError: No module named 'sklearn.lda' 目录 解决问题 解决思路 解决方法 第一步,查看sklearn版本 第二步,修改代码 解决 ...

  5. 成功解决ModuleNotFoundError: No module named ‘sklearn.learning_curve‘

    成功解决ModuleNotFoundError: No module named 'sklearn.learning_curve' 目录 解决问题 解决思路 解决方法 解决问题 from sklear ...

  6. 成功解决ModuleNotFoundError: No module named ‘sklearn.grid_search‘

    成功解决ModuleNotFoundError: No module named 'sklearn.grid_search' 目录 解决问题 解决思路 解决方法 解决问题 ModuleNotFound ...

  7. 成功解决ModuleNotFoundError: No module named ‘sklearn.cross_validation‘

    成功解决ModuleNotFoundError: No module named 'sklearn.cross_validation' 目录 解决问题 解决思路 解决方法 解决问题 ModuleNot ...

  8. 成功解决ModuleNotFoundError: No module named ‘torch._C‘

    成功解决ModuleNotFoundError: No module named 'torch._C' 目录 解决问题 解决思路 解决方法 解决问题 ModuleNotFoundError: No m ...

  9. 成功解决ModuleNotFoundError: No module named engine

    成功解决ModuleNotFoundError: No module named 'engine' 目录 解决问题 解决思路 解决方法 解决问题 ModuleNotFoundError: No mod ...

最新文章

  1. 加大基础研究投入 给科技创新注入“强心剂”
  2. python plot设置坐标轴_python matplotlib坐标轴设置的方法
  3. 【opencv】经典的细化提取骨架理论及源代码
  4. Py之moviepy:python库之moviepy的简介、安装、使用方法详细攻略
  5. Linux 进内核,arm linux 启动流程之 进入内核
  6. Redis整合springboot实现哨兵模式
  7. SAP License:PS-七日通-第二通-预算管理
  8. 总结之:CentOS 6.5基于DHCP的PXE自动化安装系统详解
  9. 分布式视频编码对比实验中H.264/AVC Intra 模式与H.264/AVC Inter Motion模式分析
  10. 黑马程序员——java基础---IO(input output)流字符流
  11. ARCGIS制作三维地图教程(BIGEMAP)
  12. 你想要的宏基因组-微生物组知识全在这(2021.3)
  13. 谷歌浏览器SwitchyOmega插件下载安装
  14. 求一个图中的最大团(全连通分量) n = 40 (中途相遇法)
  15. 软件集成:Simulink与STM32联合开发
  16. JavaScript 动态表格操作
  17. java实训答辩ppt_基于JavaSwing的工作考勤管理系统设计与实现毕业论文+开题报告+实习报告+实习日历+答辩PPT+项目源码...
  18. 移植移远4G模块EC20过程记录3-EC20模块固件升级以适配QMI拨号
  19. 2021_01_25
  20. Proteus教程——LED 应急灯电路

热门文章

  1. weevely入手使用笔记
  2. 【随感】看老科和当当的回眸相视
  3. 【11/11】模拟赛
  4. python有道翻译接口翻译页面-tornado框架学习及借用有道翻译api做自动翻译页面...
  5. python语言程序设计基础第二版答案-python语言程序设计基础(第二版)第五章答案随笔...
  6. python入门只需20分钟-史上最详细python学习路线-从入门到精通,只需5个月时间...
  7. python手机版编程-可以使用手机编程实现python吗
  8. python第三方库有哪些常用的、请列举15个-python基础面试常见题
  9. python 绘制柱状图-Python使用Plotly绘图工具,绘制柱状图
  10. python工具是什么-python有什么好用的持续集成工具么?