Doublevv 发表于 2023-4-25 09:34

如何用python删除PPT页面的logo图

从宣**网下载的党课PPT,每页都带有logo图案,一个一个删太麻烦了,就想用python来处理。
搜索了网上的资料,有个思路:遍历页面上的shapes,发现尺寸符合的shape就使用shape.Delete()方法删除。
可是这样必须先确定每个PPT页面上logo图的height和width,不同PPT的logo尺寸还不一样,每次都要在python程序中调整。
还有一种是logo图在母版上,遍历shapes发现不了。
有没有更智能的方法,能自动判断删除呢?

独孤的云 发表于 2023-4-26 16:58

换背景图呀或修改母版logo图案

xiaoboy 发表于 2023-4-30 10:21

import cv2
from pptx import Presentation

# 加载logo图案和PPT文件
logo = cv2.imread('logo.png', cv2.IMREAD_GRAYSCALE)
ppt = Presentation('example.pptx')

# 遍历PPT中的每一页
for slide in ppt.slides:
    # 将当前页保存为图像文件
    slide.shapes.image.save('temp.png')

    # 加载当前页图像并进行模板匹配
    img = cv2.imread('temp.png', cv2.IMREAD_GRAYSCALE)
    result = cv2.matchTemplate(img, logo, cv2.TM_CCOEFF_NORMED)

    # 如果当前页中包含logo,则删除该页
    if (result >= 0.8).any():
      ppt.slides.remove(slide)

# 保存修改后的PPT文件
ppt.save('modified.pptx')

Doublevv 发表于 2023-4-30 16:57

xiaoboy 发表于 2023-4-30 10:21
import cv2
from pptx import Presentation



用cv库应该可以的

Doublevv 发表于 2023-4-30 20:35

我现在用的是找height*10/width=3比例的图然后删除,可能会误删,用cv会更精准。
页: [1]
查看完整版本: 如何用python删除PPT页面的logo图