最近终于找到一个好的方法,使用Python的OpenCV模块识别滑动验证码的缺口,可以将滑动验证码中的缺口识别出来了。
测试使用如下两张图片:
target.jpg
template.png
现在想要通过“template.png”在“target.jpg”中找到对应的缺口,代码实现如下:
注:想学习Python的小伙伴们
可以
进群:984137898
领取从0到1完整学习资料 视频 精品书籍 一个月经典笔记和99道练习题及答案
# encoding=utf8importcv2importnumpyasnpdefshow(name):cv2.imshow('Show', name) cv2.waitKey(0) cv2.destroyAllWindows()defmain():otemp ='template.png'oblk ='target.jpg'target = cv2.imread(otemp,0) template = cv2.imread(oblk,0) w, h = target.shape[::-1] temp ='temp.jpg'targ ='targ.jpg'cv2.imwrite(temp, template) cv2.imwrite(targ, target) target = cv2.imread(targ) target = cv2.cvtColor(target, cv2.COLOR_BGR2GRAY) target = abs(255- target) cv2.imwrite(targ, target) target = cv2.imread(targ) template = cv2.imread(temp) result = cv2.matchTemplate(target, template, cv2.TM_CCOEFF_NORMED) x, y = np.unravel_index(result.argmax(), result.shape)# 展示圈出来的区域cv2.rectangle(template, (y, x), (y + w, x + h), (7,249,151),2) show(template)if__name__ =='__main__': main()
运行结果见本文最上面,通过运行结果可以知道,已经正确的找到了缺口位置。