【发布时间】:2022-11-09 00:31:31
【问题描述】:
我有几个 powerpoint 需要以编程方式洗牌并从中提取图像。然后需要将图像转换为 OpenCV 格式以供以后处理/分析。我已经成功地为 pptx 中的图像完成了此操作,使用:
for slide in presentation:
for shape in slide.shapes
if 'Picture' in shape.name:
pic_list.append(shape)
用于提取,并且:
img = cv2.imdecode(np.frombuffer(page[i].image.blob, np.uint8), cv2.IMREAD_COLOR)
用于 python-pptx 图片到 OpenCV 的转换。但是,我在以类似方式提取和操作背景时遇到了很多麻烦。
slide.background
提取一个“_Background”对象就足够了,但是我还没有找到一个很好的方法来将它转换成类似于Pictures的OpenCV对象。有谁知道如何做到这一点?我正在使用 python-pptx 进行提取,但如果无法使用该软件包,则不会对其他软件包不利。
【问题讨论】:
-
“opencv 对象”?你想要numpy 数组或 PIL
Image对象。这些是python中最常见的图像表示。 -
是的,它是 OpenCV 中使用的 BGR 格式的 numpy 数组。这不是真正的问题,提取背景以便将它们转换为图像类型——任何类型的——用于下游分析是问题所在。
-
所以这是一个
python-pptx的问题。 their api docs 没有提及Background对象,尽管它显然存在......你应该在他们的 github 上提交一个错误。 -
与 python-pptx 相比,它更像是一个一般性的“有什么方法可以提取背景并将它们转换为 Python 中的图像格式”。我目前正在研究 Aspose.Slides 作为一种潜在的解决方案,如果它有效,我将发布它。
标签: python powerpoint python-pptx