成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python項目實戰篇之常用驗證碼標注&識別(數據采集/預處理/字符圖切割)

開發 后端
數據采集:根據圖片驗證碼鏈接進行批量下載圖片,最開始時下載個20張先進行手動改文件名進行標注,下載這塊代碼編寫不難,這里不貼代碼了,見image_download.py文件。

[[423249]]

大家好,我是Snowball。

一、前言

上一篇文章小編給大家講解了需求分析和實現思路,Python項目實戰篇——常用驗證碼標注和識別(需求分析和實現思路),這篇文章繼續沿著上一篇文章的內容,給大家講解下數據采集/預處理/字符圖切割內容。

二、數據采集

數據采集:根據圖片驗證碼鏈接進行批量下載圖片,最開始時下載個20張先進行手動改文件名進行標注,下載這塊代碼編寫不難,這里不貼代碼了,見image_download.py文件。

三、預處理

預處理:根據需求分析中的字符切割描述,針對筆者的圖片驗證碼案例情況,需要先進行常規驗證碼圖片預處理,預處理通過OpenCV庫實現,處理過程為:

  1. 原始圖->灰度圖->中值濾波->二值化->輪廓檢測繪制(部分情況才可以加)->字符切割填充 

大概過程功能簡單描述如下,詳細原理可以參考OpenCV相關文章和視頻,引用鏈接:

  1. [3.OpenCV文章專欄](https://blog.csdn.net/yukinoai/category_9283880.html) 
  2. [4.OpenCV-Python視頻](https://www.bilibili.com/video/BV1tb4y1C7j7) 

原始圖(RGB)轉灰度圖:去除顏色信息,減少圖片大小,單通道值方便濾波處理。讀者可以腦洞一下,不去除顏色信息,能提取到指定字符顏色的輪廓嗎?

灰度圖中值濾波:進行噪音去除,取中間像素平均值

二值化:只留下0、255二種值,方便輪廓檢測

輪廓檢測:這一步主要用于提取字符輪廓矩形坐標,不適合字符挨得特別緊的情況

字符切割填充:根據生成的字符輪廓圖片矩形坐標進行切割再填充對齊到指定寬高

具體執行效果如下:

下面是預處理過程部分核心代碼,詳細代碼見image_split.py文件。

  1. def pre_process_image(img, file_name): 
  2.     # 去除邊緣 
  3.     img = img[2:-2, 2:-2] 
  4.     # print(img.shape) 
  5.  
  6.     #得到灰度圖 
  7.     gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 
  8.     # show("gray", gray) 
  9.  
  10.     #去除噪音 
  11.     blur = cv2.medianBlur(gray, 3) 
  12.     # show("blur", blur) 
  13.  
  14.     temp = gray.mean().item() 
  15.     #二值化 
  16.     ret, threshold = cv2.threshold(blur, temp, 255, cv2.THRESH_BINARY) 
  17.     # show("threshold", threshold) 
  18.  
  19.     #保存二值化圖片 
  20.     if IS_SAVE_FILE: 
  21.         cv2.imwrite(DST_IMG_DIR + file_name + "_threshold.png", threshold) 
  22.     return threshold 

執行圖片預處理程序后具體效果圖1-3如下:

輪廓檢測繪制結果1:

根據圖片輪廓進行字符切割結果2:

根據字符切割圖片進行文件分類結果3:

以上就是字符圖片切割的全部過程了,核心過程代碼如下:

  1. def split_image(file_path): 
  2.     file_name = get_file_name(file_path) 
  3.     img = read_image(file_path) 
  4.  
  5.     #驗證碼預處理 
  6.     threshold = pre_process_image(img, file_name) 
  7.  
  8.     #查找輪廓邊界列表 
  9.     contours = find_counters(threshold) 
  10.  
  11.     #過濾合適的輪廓矩形列表 
  12.     rect_list,result_rect = get_filter_rect(contours, img, file_name) 
  13.  
  14.     #分割矩形圖片 
  15.     return split_rect_img(file_path, threshold, rect_list, result_rect) 

詳細代碼可以閱讀源碼,這里說一下這個過程中筆者編寫預處理代碼遇到的幾個問題:

  1. 部分圖片輪廓檢測可以檢測到多個輪廓,部分圖片只有1-2個輪廓,部分可能一個輪廓都沒有,這里代碼進行了相應的調整處理,比如過濾大的外部輪廓和較小的內部輪廓,根據剩下的輪廓進行坐標排序,根據部分坐標得到所有字符輪廓
  2. 得到4個字符輪廓圖片后,每個圖片大小不一致,需要進行大小補齊,這個寬高參數需要根據數據集進行調整

以上就是數據采集/預處理的實現過程了,這里稍微說下學習OpenCV相關知識過程的情況,筆者是采用文章+視頻間斷性學習,大概是20-40個小時左右,然后再開始寫具體字符圖片切割的代碼,讀者可根據自己的時間安排學習速度,建議工具類的東西是快速學習,現學現用。好的,接下來介紹高效率、可復用的通用圖片驗證碼數據標注功能實現。

四、總結

我是Snowball。上一篇文章給大家分享了,Python項目實戰篇——常用驗證碼標注和識別(需求分析和實現思路),這篇內容主要講解了常用驗證碼標注&識別的數據采集/預處理的實現過程。下一篇文章,小編給大家介紹高效率、可復用的通用圖片驗證碼數據標注功能實現。

 

小伙伴們,快快用實踐一下吧!如果在學習過程中,有遇到任何問題,歡迎加我好友,我拉你進Python學習交流群共同探討學習。

 

責任編輯:武曉燕 來源: Python爬蟲與數據挖掘
相關推薦

2021-09-09 08:55:50

Python項目驗證碼

2021-09-16 07:52:18

Python項目實戰

2021-09-18 09:15:39

Python神經網絡Python基礎

2013-06-19 10:19:59

2024-01-29 08:32:10

Python驗證碼識別

2020-12-29 05:33:03

Serverless驗證碼架構

2016-11-08 19:19:06

2016-11-03 13:33:31

2019-05-21 14:33:01

2023-10-27 08:53:13

Python驗證碼圖片識別

2022-02-17 10:34:21

神經網絡識別驗證碼

2016-11-14 15:40:01

Android

2022-05-11 07:41:31

Python驗證碼

2021-02-04 10:08:34

騰訊云驗證碼醫療影像

2021-06-16 06:58:09

TensorFlow識別驗證碼

2021-07-22 10:25:07

JS驗證碼前端

2014-04-24 10:09:05

驗證碼C#

2025-03-07 08:00:00

數據數據集集神經網絡數據預處理

2016-12-18 15:03:57

Python Scikit Lea數據
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 乱码av午夜噜噜噜噜动漫 | 韩日av在线 | 国产亚洲网站 | 精品国产一区二区三区在线观看 | 久久久久久一区 | 一级黄色短片 | 精品一区二区在线观看 | 欧美一区二区三区国产精品 | 久草资源在线视频 | 亚洲精品综合一区二区 | 国产在线观看免费 | 一二三四av | 91精品在线播放 | 日韩手机在线视频 | 国产精品美女久久久 | 国产美女一区二区三区 | 中文字幕成人 | 欧美成人在线网站 | 久久久蜜桃一区二区人 | 亚洲福利在线观看 | 欧美综合久久久 | 成人av在线播放 | 成人在线小视频 | 一级毛片色一级 | 国产精品福利在线观看 | 日韩一区二区视频 | 国产精品五区 | 久久精品一级 | 久久高清国产视频 | 欧美久久一区二区 | 日韩免费高清视频 | 久久午夜精品福利一区二区 | 日日天天 | 99视频在线免费观看 | 中文一区二区 | 国产精品国产三级国产aⅴ原创 | 久久综合久色欧美综合狠狠 | 一级日批片 | 成人免费看片又大又黄 | 欧美日韩在线一区二区 | 久久久精|