原图:
去水印后:
程序非常简单,首先读取图片后,转为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)