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