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)
加载全部内容