OpenCV滑塊驗證碼圖像缺口位置識別

OpenCV圖像缺口位置識別

    • 1、背景
    • 2、圖像缺口位置識別原理
    • 3、圖像缺口位置識別實現
    • 4、滑塊驗證碼HTTP圖像需要保存到本地嗎


1、背景


在使用Selenium完成自動化爬蟲時,許多網站為了防止機器人爬取數據會使用驗證碼(例如滑塊驗證碼)。通過Selenium動作操作,爬蟲可以模擬用戶輸入驗證碼或使用鼠標移動一定距離來處理驗證碼驗證過程

完成這一流程的關鍵步驟有兩步:識別出目標圖像缺口的位置,操作滑塊滑動到對應缺口位置

而識別目標圖像缺口的位置可以通過OpenCV模塊實現

OpenCV模塊詳解見文章:傳送門

2、圖像缺口位置識別原理


對于滑塊驗證碼缺口圖片(如下圖):

在這里插入圖片描述

主要步驟包括:

  • 對滑塊驗證碼圖片進行高斯模糊濾波處理,消除部分噪聲干擾
  • 對滑塊驗證碼圖片應用邊緣檢測算法,通過調整相應閾值識別出滑塊邊緣
  • 對上一步得到的各個邊緣輪廓信息,通過對比面積、位置、周長等特征篩選出最可能的輪廓位置,得到缺口位置

3、圖像缺口位置識別實現


3.1、導入所需模塊

import cv2
import urllib.request as req
import numpy as np

3.2、高斯模糊與邊緣檢測

高斯濾波是用來去除圖像中的一些噪聲的,基本效果其實就是把一張圖像變得模糊化,減少一些圖像噪聲干擾,從而為下一步的邊緣檢測做好鋪墊。經過高斯濾波處理后,圖像會變得模糊

由于驗證碼目標缺口通常具有比較明顯的邊緣,所以借助一些邊緣檢測算法并通過調整閾值可以找出它的位置。經過邊緣檢測算法處理后,一些比較明顯的邊緣信息會被保留下來

# 讀取圖像文件并返回一個image數組表示的圖像對象
src1 = r'C:\Users\cc\Desktop\bg.png'
image = cv2.imread(url)
print("圖像大小:", image.shape)# GaussianBlur方法進行圖像模糊化/降噪操作
# 它基于高斯函數(也稱為正態分布)創建一個卷積核(或稱為濾波器),該卷積核應用于圖像上的每個像素點
blurred = cv2.GaussianBlur(image, (5, 5), 0)# Canny方法進行圖像邊緣檢測(輪廓)
# image: 輸入的單通道灰度圖像
# threshold1: 第一個閾值,用于邊緣鏈接。一般設置為較小的值
# threshold2: 第二個閾值,用于邊緣鏈接和強邊緣的篩選。一般設置為較大的值
canny = cv2.Canny(blurred, 0, 100

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/163815.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/163815.shtml
英文地址,請注明出處:http://en.pswp.cn/news/163815.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

前端工程、靜態代碼、Html頁面 打包成nginx 的 docker鏡像

1. 創建一個 mynginx的目錄 2. 將前端代碼文件夾(比如叫 front )復制到 mynginx 目錄下 3. 在mynginx 目錄下創建一個名為Dockerfile 的文件(文件名不要改),文件內容如下: # 使用官方的 Nginx 鏡像作為基…

神經網絡訓練技巧

1. 逐漸增加訓練數據規模,比如先在小數據集上訓練,之后再增大數據集繼續訓練。

網站權重是什么意思

網站權重是指搜索引擎對網站的評估指標,用以衡量網站的重要性 搜索引擎會根據網站權重來決定網站在搜索結果中的排名和位置,從而決定其在搜索中的可見度 網站權重是多方面因素的綜合評估,其中主要包括網站內容質量、外部鏈接量及質量、網站…

JS逆向之wasm逆向(二)

本文僅供技術交流和技術學習 不做其他用途 接著上一篇繼續講: 上篇地址: JS逆向之wasm逆向(二進制) 網址: aHR0cHM6Ly93d3cuN3E2Y3lqLmNvbTo5MDAxL3JlZ2lzdGVyNDY5Njg/aV9jb2RlPTQ0Mjc5OTU1 這個網站我們后面可以繼續講他的debugger 和滑塊…

[點云分割] Clustering of Pointclouds into Supervoxels

介紹 “Clustering of Pointclouds into Supervoxels” 是一種點云數據聚類的方法,用于將點云數據分割成具有相似特征的超體素(supervoxel)。 超體素是一種在點云數據中表示連續區域的方法,類似于像素在圖像中表示連續區域。超體…

C 語言 http通信

1,C語言本身不包含直接支持HTTP協議的功能,但你可以使用第三方庫來實現HTTP客戶端或服務器。 以下是一些常用的C語言HTTP庫: libcurl:一個支持多種協議的開源庫,包括HTTP、HTTPS、FTP等。它提供了一組簡單的API&…

因果發現31種高效經典方案匯總,附配套算法和代碼

因果發現(Causal Discovery)是一個復雜的過程,其目標是從大量的數據中確定變量之間的因果關系。這個過程通常涉及到的是如何從紛繁復雜的數據中發現其中隱含的因果關系。有時,研究者可以通過隨機實驗進行干預來發現因果關系&#…

解決PDF預覽時,電子簽章、日期等不顯示問題

文章目錄 問題描述問題排查問題解決 問題描述 在預覽PDF時,部分簽章或控件沒有顯示。如下圖: 正確應該要這樣: 問題排查 根據網上搜索,排查,我先看看,pdf.worker.js 里的這三行代碼,是否已經注…

JVM 類加載

① 類加載過程 從上面的圖片我們可以看出整個 JVM 執行的流程中,和程序員關系最密切的就是類加載的過程了,所以 接下來我們來看下類加載的執行流程。 對于一個類來說,它的生命周期是這樣的: 其中前 5 步是固定的順序并且也是類加載…

Android : Spinner(列表選項框) + BaseAdapter -簡單應用

??容器與適配器:????? http://t.csdnimg.cn/ZfAJ7 示例圖: 實體類 Demo.java package com.example.mygridviewadapter.entity;public class Demo {private String text;private int img;public Demo(String text, int img) {this.text…

虛擬機解決Linux中Uos和Deepin登錄密碼忘記的問題 標題Linux Uos Deepin

Uos是切換網絡模式解決的(之前有綁定過用戶) 因為之前用的是橋接模式登錄的時候一直無法聯網,改為Nat模式后可以和電腦共用一個網絡ip,可以重置密碼了,以此解決 ps: 特別說明rw single init/bin/bash 方法和systemd.debug-shell1方法已經失效,不要再做無謂的嘗試了Deepin23社區…

Vue + Element UI 實現復制當前行數據功能(復制到新增頁面組件值不能更新等問題解決)

1、需求 使用Vue Element UI 實現在列表的操作欄新增一個復制按鈕&#xff0c;復制當前行的數據可以打開新增彈窗后亦可以跳轉到新增頁面&#xff0c;本文實現為跳轉到新增頁面。 2、實現 1&#xff09;列表頁 index.vue <el-table> <!-- 其他列 --> <el-t…

JOSEF 漏電繼電器 LLJ-100FG φ45 50-500mA 卡軌安裝

系列型號&#xff1a; LLJ-10F(S)漏電繼電器LLJ-15F(S)漏電繼電器LLJ-16F(S)漏電繼電器 LLJ-25F(S)漏電繼電器LLJ-30F(S)漏電繼電器LLJ-32F(S)漏電繼電器 LLJ-60F(S)漏電繼電器LLJ-63F(S)漏電繼電器LLJ-80F(S)漏電繼電器 LLJ-100F(S)漏電繼電器LLJ-120F(S)漏電繼電器LLJ-125F(S…

推薦一個簡單的在線壓縮PNG和JPG圖片大小的網址

問題描述&#xff1a;推薦一個簡單的在線壓縮PNG和JPG圖片大小的網址 解決&#xff1a; https://www.iloveimg.com/zh-cn/compress-image/compress-png

將對象轉成URL參數

背景 有的時候前端跳轉到其他平臺的頁面需要攜帶額外的參數&#xff0c;需要將對象轉成用 & 連接的字符串拼接在路徑后面。 實現方法

C++中對SQLite進行增刪改查

#include <iostream> #include <sqlite3.h>// 創建數據庫連接 sqlite3* OpenDatabase(const char* dbFilePath) {sqlite3* db;// 打開數據庫if (sqlite3_open(dbFilePath, &db) ! SQLITE_OK) {std::cerr << "Error opening database." <<…

HTTP ERROR 403 No valid crumb was included in the request

1、報錯截圖&#xff1a; 2、產生原因&#xff1a; 開啟了csrf&#xff0c;即跨站請求偽造 3、新版本不支持頁面修改&#xff0c;故需要修改jenkins配置文件 3.1 進入編輯配置文件 vim /etc/sysconfig/jenkins 3.2 修改JENKINS_JAVA_OPTIONS&#xff0c;并保存修改 JENKI…

深度學習之四(循環神經網絡Recurrent Neural Networks,RNNs)

概念 循環神經網絡(Recurrent Neural Networks,RNNs)是一類專門用于處理序列數據的神經網絡,它在處理時考慮了序列數據的順序和上下文信息。RNNs 在自然語言處理、時間序列分析、語音識別等領域得到廣泛應用。 1. 基本結構: RNN 的基本結構包含一個或多個循環單元,每個…

Ubuntu 系統上使用 QQ 郵箱的 SMTP 服務器發送郵件,msmtp(已驗證)

安裝 msmtp sudo apt-get update sudo apt-get install msmtp2 .配置 msmtp nano ~/.msmtprcdefaults auth on tls on tls_starttls on tls_trust_file /etc/ssl/certs/ca-certificates.crt logfile ~/.msmtp.logaccount qq host …

Lua腳本解決redis實現的分布式鎖多條命令原子性問題

線程1現在持有鎖之后&#xff0c;在執行業務邏輯過程中&#xff0c;他正準備刪除鎖&#xff0c;而且已經走到了條件判斷的過程中&#xff0c;比如他已經拿到了當前這把鎖確實是屬于他自己的&#xff0c;正準備刪除鎖&#xff0c;但是此時他的鎖到期了&#xff0c;那么此時線程2…