亲宝软件园·资讯

展开

Python实现处理图片水印的方法详解

小小小小能 人气:0

原图: 

去水印后:

程序非常简单,首先读取图片后,转为HSV通道图像。

image = cv2.imread("watermark.png")
 
HSV = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)

参考文末补充内容获取水印处的HSV值的范围

我这张图片的水印HSV值大概范围是

背景HSV值为

黑色正文部分HSV值为

于是: 

mask = cv2.inRange(HSV, (0, 0, 195), (0, 0, 255))
cv2.imshow("mask", mask)

结束!!

处理后文字有点锯齿状,试了图像增强矫正和图像平滑处理效果都不明显(原图有些模糊也是原因之一)

如果有好的方法,麻烦教一教我!谢谢!

完整代码

import cv2
 
image = cv2.imread(r"watermark.png")
 
HSV = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
# cv2.imshow("HSV", HSV)
 
mask = cv2.inRange(HSV, (0, 0, 195), (0, 0, 255))
cv2.imshow("mask", mask)
 
cv2.imwrite('watermark-result.png', mask)
cv2.waitKey(0)

补充

用python和opencv定义鼠标点击事件获取图片各个位置的HSV值(附代码)

效果如下,鼠标左键点击图片中任意位置显示该点的HSV值。

源代码:

import cv2
 
# 读取图片
image = cv2.imread(r"./images/screenshot/target_open.jpg")
 
# 转为HSV图
HSV = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
 
# 定义一个鼠标左键按下去的事件
def getpos(event, x, y, flags, param):
    if event == cv2.EVENT_LBUTTONDOWN:
        print(HSV[y, x])
 
# cv2.imshow('image', image)
cv2.imshow("imageHSV", HSV)
 
cv2.setMouseCallback("imageHSV", getpos)
cv2.waitKey(0)

加载全部内容

相关教程
猜你喜欢
用户评论