赞
踩
对比图。水印去除前后;
代码:
- import cv2
- import numpy as np
-
- imgs = cv2.imread("1.png")
- image = imgs.copy()
- # images = imgs.copy()
- # print(image.shape)
- # rows, cols = image.shape[:2]
- # print(rows, cols)
- red_minus_blue = image[:, :, 2] - image[:, :, 0]
- cv2.imwrite("res.jpg",image[:, :, 2])
-
-
- # red_minus_green = image[:, :, 2] - image[:, :, 1]
-
-
- # red_minus_blue = red_minus_blue >= 20
- # red_minus_green = red_minus_green >= 20
-
- # red = image[:, :, 2] >= np.mean(image[:, :, 2])/2
-
- # mask = red_minus_green & red_minus_blue & red
- # print(mask)
- # images[mask,:]=255
- # mask = (1-mask).astype(np.bool)
- # print(mask)
- # image[mask, :] = 255
-
- # # stack = np.vstack([imgs,image,images])
- # # cv2.imshow("stack", images)
- # cv2.imwrite("result.jpg",images)
- # # cv2.imshow("orgin", imgs)
- # # cv2.imshow("red", image)
- # cv2.imshow("delete_red", images)
- cv2.waitKey()
-
- # 红色像素值最大,且大于阈值(中值)
- # 其他通道像素值的距离比较小,且与红色像素值的距离比率较大,且大于阈值(自己调)。

- pip install fitz
-
- pip install pymupdf
- import fitz
-
-
- def func(doc):
- for i in range(len(doc)):
- imglist = doc.getPageImageList(i)
- for j, img in enumerate(imglist):
- xref = img[0]
- pix = fitz.Pixmap(doc, xref) # make pixmap from image
- if pix.n - pix.alpha < 4: # can be saved as PNG
- pix.writePNG("p%s-%s.png" % (i+1, j+1))
- else: # CMYK: must convert first
- pix0 = fitz.Pixmap(fitz.csRGB, pix)
- pix0.writePNG("p%s-%s.png" % (i+1, j+1))
- pix0 = None # free Pixmap resources
- pix = None # free Pixmap resources
-
-
- if __name__ == "__main__":
- func(doc=fitz.open('11.pdf')) # input the path of pdf file
-
-
- ###参考博客 https://blog.csdn.net/qq_42951560/article/details/109609662

批量去除水印:
- def remove():
- """
- 去除水印
- """
- list_file=os.listdir('./pic')
- print(list_file)
- for i in list_file:
- imgs = cv2.imread('./pic/'+i)
- image = imgs.copy()
- # print(imgs)
- cv2.imwrite("./res/"+i,image[:, :, 2])
目录结构:
- import fitz
- import os
- import cv2
- import numpy as np
-
-
- def func(doc):
- for i in range(len(doc)):
- imglist = doc.getPageImageList(i)
- for j, img in enumerate(imglist):
- xref = img[0]
- pix = fitz.Pixmap(doc, xref) # make pixmap from image
- if pix.n - pix.alpha < 4: # can be saved as PNG
- pix.writePNG("./pic/p%s-%s.png" % (i+1, j+1))
- else: # CMYK: must convert first
- pix0 = fitz.Pixmap(fitz.csRGB, pix)
- pix0.writePNG("./pic/p%s-%s.png" % (i+1, j+1))
- pix0 = None # free Pixmap resources
- pix = None # free Pixmap resources
-
-
- def remove():
- """
- 去除水印
- """
- list_file=os.listdir('./pic')
- print(list_file)
- for i in list_file:
- imgs = cv2.imread('./pic/'+i)
- image = imgs.copy()
- # print(imgs)
- cv2.imwrite("./res/"+i,image[:, :, 2])
-
-
-
-
-
-
-
- if __name__ == "__main__":
- # 第一步 将pdf中所有图片写入文件夹
- # func(doc=fitz.open('11.pdf')) # input the path of pdf file
- # 第二步 去除文件夹内所有图片的红色水印
- # remove()
-
-

使用金山wps工具就可以将文件夹内的图片合成pdf文档了。
参考博客:https://blog.csdn.net/a362682954/article/details/105628198/
参考博客 :https://blog.csdn.net/qq_42951560/article/details/109609662
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。