opencv-python 图片去水印或文字及打马赛克
没有用基于像素的反色中和的方法
1. 基于选块的去除
通过鼠标选择图片中需要去除的水印,文字或…先看下效果不算完美,研究学习inpaint函数,及对图像的像素操作。
- 使用了opencv中inpaint方法去除水印或文字
- 平移像素填充 方法去除水印或文字
最后顺便做了个打马赛克效果测试。
代码:
import cv2
import numpy as np
def onmouse(event, x, y, flags, param): # 鼠标事件的回调函数
global ix, iy, drawing, mode
if event == cv2.EVENT_LBUTTONDOWN: # 按下左键
ix, iy = x, y # 赋予按下时的鼠标,获取选中区域矩形左上角坐标
elif event == cv2.EVENT_MOUSEMOVE and flags == cv2.EVENT_FLAG_LBUTTON: # 当按下左键拖拽鼠标时
tmp1=img.copy()
cv2.rectangle(tmp1, (ix, iy), (x, y), (0, 0, 255), -2)
cv2.imshow('Imageorg', tmp1)
elif event == cv2.EVENT_LBUTTONUP: # 当鼠标左键松开
tmp1=img.copy()
cv2.rectangle(img, (ix, iy), (x, y), (0, 0, 255), 2)
mosaic(img,ix, iy, x, y)#马赛克处理
img_inpaint(img,ix, iy, x, y)# cv2.inpaint调用
cleanself(img,ix, iy, x, y)#平移像素处理
elif event == cv2.EVENT_MOUSEMOVE and flags != cv2.EVENT_FLAG_LBUTTON:#左键没有按下的情况下,鼠标移动 标出坐标