python识别图片中是否包含水印(opencv)

摘要: 最近在写爬虫,但爬下来的很多图片被加了水印,而且水印的位置不是固定的。本来不是搞图形图像处理的我,只好google了一把,看到很多用opencv来解决类似问题。这里记录一下水印识别的代码.

最近在写爬虫,但爬下来的很多图片被加了水印,而且水印的位置不是固定的。本来不是搞图形图像处理的我,只好google了一把,看到很多用opencv来解决类似问题。这里记录一下水印识别的代码.

首先,必须安装如下依赖, 用了豆瓣的镜像,速度快些.

pip install matplotlib -i  https://pypi.douban.com/simple
pip install numpy
pip install opencv-python -i  https://pypi.douban.com/simple


识别水印的代码如下:
import cv2 
import numpy as np 
  
# Read the main image 
img_rgb = cv2.imread('maven-spotbugs-static-code.png')  
# Convert it to grayscale 
img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)   
# Read the template 
template = cv2.imread('mark.jpg',0)  
# Store width and heigth of template in w and h 
w, h = template.shape[::-1]  
# Perform match operations. 
res = cv2.matchTemplate(img_gray,template,cv2.TM_CCOEFF_NORMED)  
# Specify a threshold 
threshold = 0.8  
# Store the coordinates of matched area in a numpy array 
loc = np.where( res >= threshold)
x=loc[0]
y=loc[1]
# Draw a rectangle around the matched region. 
if len(x) and len(y):
    for pt in zip(*loc[::-1]): 
        cv2.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0,255,255), 2)  
    # Show the final image with the matched area. 
    #cv2.imshow('Detected',img_rgb) 
    cv2.imwrite("test_001.png", img_rgb)
    print("I found the watermark")
else:
    print('there is no watermark')


找到水印之后,还会把水印所在位置框选出来,而且还可以得到坐标,这为以后替换水印打下了基础.

上一篇: 编译安装psutil报错test_posix.py', 61, 29, "fmt_map...
下一篇: Centos7 下测试mosquitto性能
 评论 ( What Do You Think )
名称
邮箱
网址
评论
验证
   
 

 


  • 微信公众号

  • 我的微信

站点声明:

1、一号门博客CMS,由Python, MySQL, Nginx, Wsgi 强力驱动

2、部分文章或者资源来源于互联网, 有时候很难判断是否侵权, 若有侵权, 请联系邮箱:summer@yihaomen.com, 同时欢迎大家注册用户,主动发布无版权争议的 文章/资源.

3、鄂ICP备14001754号-3, 鄂公网安备 42280202422812号