原图:

去水印后:

程序非常简单,首先读取图片后,转为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)
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

评论(0)