写在前面
自己的测试环境:
Ubuntu20.04
ROS-Noetic
一、问题描述
运行以下 python
程序时,
bridge = CvBridge()
ground_image_array = bridge.imgmsg_to_cv2(ground_image_msg, "bgr8")
ground_image_buffer.append(ground_image_array)
出现如下报错:
Traceback (most recent call last):
File "/opt/ros/noetic/lib/python3/dist-packages/rospy/topics.py", line 750, in _invoke_callback
cb(msg)
File "main.py", line 133, in satelliteMapCallback
ground_image_array = bridge.imgmsg_to_cv2(ground_image_msg, "bgr8")
File "/opt/ros/noetic/lib/python3/dist-packages/cv_bridge/core.py", line 163, in imgmsg_to_cv2
dtype, n_channels = self.encoding_to_dtype_with_channels(img_msg.encoding)
File "/opt/ros/noetic/lib/python3/dist-packages/cv_bridge/core.py", line 99, in encoding_to_dtype_with_channels
return self.cvtype2_to_dtype_with_channels(self.encoding_to_cvtype2(encoding))
File "/opt/ros/noetic/lib/python3/dist-packages/cv_bridge/core.py", line 91, in encoding_to_cvtype2
from cv_bridge.boost.cv_bridge_boost import getCvType
ImportError: /lib/libgdal.so.26: undefined symbol: TIFFReadRGBATileExt, version LIBTIFF_4.0
二、解决方法
出现这个问题的原因,可能是系统中存在多个 libtiff.so.5
库,但是索引到的 libtiff.so.5
里没有 LIBTIFF_4.0
,所以需要指定正确的 libtiff.so.5
库.
在程序执行前,先在终端运行以下指令(或者在./bashrc
中添加以下命令):
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libtiff.so.5
然后再次运行自己的程序,即可解决问题。
参考链接
[1] 向阳+. caffe编译遇到的问题(持续更新) [EB/OL]. https://blog.csdn.net/m0_37407756/article/details/70789271, 2017-04-26/2024-08-01.