python利用opencv库破解滑动验证码


opencv库的使用

cv2.imread(filepath,flags):读入一张图像

  • filepath:要读入图片的完整路径
  • flags:读入图片的标志
    • cv2.IMREAD_COLOR:默认参数,值为1,读入一副彩色图片,忽略alpha通道
    • cv2.IMREAD_GRAYSCALE:值为0,读入灰度图片,
    • cv2.IMREAD_UNCHANGED:值为-1,读入完整图片,包括alpha通道

cv2.imshow(wname,img):显示图像

  • wname:显示图像窗口的名字
  • img:要显示的图像,窗口大小自动调整为图片大小

cv2.imwrite(file,img,num):保存一张图像

  • file:要保存的文件名
  • img:保存的图像
  • num:压缩的级别,默认为3

cv2.cvtColor(img,code) :图像颜色空间转换

  • img:要转换的图片
  • code:要转换颜色的数值
    • cv2.COLOR_RGB2GRAY:彩色图像转化为灰度图像
    • cv2.COLOR_GRAY2RGB:灰度图像转化为彩色图像
    • # cv2.COLOR_X2Y,其中X,Y = RGB, BGR, GRAY, HSV, YCrCb, XYZ, Lab, Luv, HLS

cv2.matchTemplate(img,templ,method):模板匹配

  • img:待搜索图像
  • templ:搜索模板,需和原图一样的数据类型且尺寸不能大于源图像
  • method:指定的匹配方法
    • CV_TM_SQDIFF----平方差匹配法(最好匹配0)
    • CV_TM_SQDIFF_NORMED----归一化平方差匹配法(最好匹配0)
    • CV_TM_CCORR----相关匹配法(最坏匹配0)
    • CV_TM_CCORR_NORMED----归一化相关匹配法(最坏匹配0)
    • CV_TM_CCOEFF----系数匹配法(最好匹配1)
    • CV_TM_CCOEFF_NORMED----归一化相关系数匹配法(最好匹配1)

 计算滑动距离:

    def get_distance(bg_img_path,slider_img_path):
        """获取滑块移动距离"""

        #背景图片处理
        bg_img = cv.imread(bg_img_path, 0) #读入灰度图片
        bg_img = cv.GaussianBlur(bg_img, (3, 3), 0) #高斯模糊去噪
        bg_img = cv.Canny(bg_img, 50, 150) #Canny算法进行边缘检测
        #滑块做同样处理
        slider_img = cv.imread(slider_img_path, 0)
        slider_img = cv.GaussianBlur(slider_img, (3, 3), 0)
        slider_img = cv.Canny(slider_img, 50, 150)
        # 寻找最佳匹配
        res = cv.matchTemplate(bg_img, slider_img, cv.TM_CCOEFF_NORMED)
        # 最小值,最大值,并得到最小值, 最大值的索引
        min_val, max_val, min_loc, max_loc = cv.minMaxLoc(res)
        #例如:(-0.05772797390818596, 0.30968162417411804, (0, 0), (196, 1))
        top_left = max_loc[0]  # 横坐标
        # 展示圈出来的区域
        # w, h = image.shape[::-1]  # 宽高,例如(320, 160)
        # cv.rectangle(template, (x, y), (x + w, y + h), (7, 249, 151), 2)
        # cv.imshow('Show', bg_img)
        # cv.waitKey(0)
        # cv.destroyAllWindows()
        return top_left

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM