OpenPose推理遇matplotlib 3.9.0报错:module 'matplotlib.cm'无get_cmap属性
解决
AttributeError: module 'matplotlib.cm' has no attribute 'get_cmap'问题 问题原因
matplotlib 3.9.0对颜色映射(colormap)的API做了变更,原matplotlib.cm.get_cmap()方法被移除,相关功能迁移到matplotlib.colormaps模块下,导致旧代码调用该方法时报错。
解决方案
方案1:修改代码适配新版本
打开报错文件decode_pose.py,将第18行的代码:
cmap = matplotlib.cm.get_cmap('hsv')
替换为以下两种写法之一:
# 写法1:直接通过字典索引获取颜色映射 cmap = matplotlib.colormaps['hsv'] # 写法2:使用get方法(推荐,可处理颜色映射不存在的情况) cmap = matplotlib.colormaps.get('hsv')
方案2:回退到兼容的matplotlib版本
如果不想修改代码,可卸载当前版本并安装之前能正常运行的旧版本(比如3.8.x系列):
pip uninstall matplotlib -y pip install matplotlib==3.8.4
方案3:添加版本兼容代码(可选)
若需要代码同时兼容新旧matplotlib版本,可加入版本判断逻辑:
import matplotlib from matplotlib import cm if matplotlib.__version__ >= "3.9.0": cmap = matplotlib.colormaps.get('hsv') else: cmap = cm.get_cmap('hsv')
内容的提问来源于stack exchange,提问作者辻元美桜
相关产品推荐
相关产品推荐

