解决错误:No module named ‘Cryptodome‘ 和错误rosbag.bag.ROSBagException: unsupported compression type: lz4
欢迎大家关注笔者,你的关注是我持续更博的最大动力
原创文章,转载告知,盗版必究
解决错误: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相关推荐
- 解决ModuleNotFoundError: No module named ‘numpy.core._multiarray_umath‘ 错误
解决ModuleNotFoundError: No module named 'numpy.core._multiarray_umath' 错误 文章目录: 一.错误原因分析 二.解决方式 调试了好久 ...
- python导入pyecharts错误没有pyecharts_python报No module named 'pyecharts'的错误怎么办?
问:导包的时候报No module named 'pyecharts'的错误怎么办? 答:报上述错误一般是因为pyecharts这个包没有下载成功,下面给大家介绍一下pyecharts库的安装与使用方 ...
- 用python使用py2neo时候报“ModuleNotFoundError:No module named 'py2neo'”的错误
用python使用py2neo时候报"ModuleNotFoundError:No module named 'py2neo'"的错误. 1 首先cmd里面输入"py2n ...
- 成功解决ModuleNotFoundError: No module named ‘sklearn.lda‘
成功解决ModuleNotFoundError: No module named 'sklearn.lda' 目录 解决问题 解决思路 解决方法 第一步,查看sklearn版本 第二步,修改代码 解决 ...
- 成功解决ModuleNotFoundError: No module named ‘sklearn.learning_curve‘
成功解决ModuleNotFoundError: No module named 'sklearn.learning_curve' 目录 解决问题 解决思路 解决方法 解决问题 from sklear ...
- 成功解决ModuleNotFoundError: No module named ‘sklearn.grid_search‘
成功解决ModuleNotFoundError: No module named 'sklearn.grid_search' 目录 解决问题 解决思路 解决方法 解决问题 ModuleNotFound ...
- 成功解决ModuleNotFoundError: No module named ‘sklearn.cross_validation‘
成功解决ModuleNotFoundError: No module named 'sklearn.cross_validation' 目录 解决问题 解决思路 解决方法 解决问题 ModuleNot ...
- 成功解决ModuleNotFoundError: No module named ‘torch._C‘
成功解决ModuleNotFoundError: No module named 'torch._C' 目录 解决问题 解决思路 解决方法 解决问题 ModuleNotFoundError: No m ...
- 成功解决ModuleNotFoundError: No module named engine
成功解决ModuleNotFoundError: No module named 'engine' 目录 解决问题 解决思路 解决方法 解决问题 ModuleNotFoundError: No mod ...
最新文章
- 加大基础研究投入 给科技创新注入“强心剂”
- python plot设置坐标轴_python matplotlib坐标轴设置的方法
- 【opencv】经典的细化提取骨架理论及源代码
- Py之moviepy:python库之moviepy的简介、安装、使用方法详细攻略
- Linux 进内核,arm linux 启动流程之 进入内核
- Redis整合springboot实现哨兵模式
- SAP License:PS-七日通-第二通-预算管理
- 总结之:CentOS 6.5基于DHCP的PXE自动化安装系统详解
- 分布式视频编码对比实验中H.264/AVC Intra 模式与H.264/AVC Inter Motion模式分析
- 黑马程序员——java基础---IO(input output)流字符流
- ARCGIS制作三维地图教程(BIGEMAP)
- 你想要的宏基因组-微生物组知识全在这(2021.3)
- 谷歌浏览器SwitchyOmega插件下载安装
- 求一个图中的最大团(全连通分量) n = 40 (中途相遇法)
- 软件集成:Simulink与STM32联合开发
- JavaScript 动态表格操作
- java实训答辩ppt_基于JavaSwing的工作考勤管理系统设计与实现毕业论文+开题报告+实习报告+实习日历+答辩PPT+项目源码...
- 移植移远4G模块EC20过程记录3-EC20模块固件升级以适配QMI拨号
- 2021_01_25
- Proteus教程——LED 应急灯电路
热门文章
- weevely入手使用笔记
- 【随感】看老科和当当的回眸相视
- 【11/11】模拟赛
- python有道翻译接口翻译页面-tornado框架学习及借用有道翻译api做自动翻译页面...
- python语言程序设计基础第二版答案-python语言程序设计基础(第二版)第五章答案随笔...
- python入门只需20分钟-史上最详细python学习路线-从入门到精通,只需5个月时间...
- python手机版编程-可以使用手机编程实现python吗
- python第三方库有哪些常用的、请列举15个-python基础面试常见题
- python 绘制柱状图-Python使用Plotly绘图工具,绘制柱状图
- python工具是什么-python有什么好用的持续集成工具么?