”彩色的驗證碼,使用pytesseract識別出來的驗證碼內容一直是空“的解決辦法

問題:彩色的驗證碼,使用pytesseract識別出來的驗證碼內容一直是空字符串
原因:pytesseract只識別黑色部分的內容
解決辦法:先把彩色圖片精確轉換成黑白圖片。再將黑白圖片進行反相,將驗證碼部分的內容變成黑色,背景變成白色的。
代碼:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date    : 2019-11-204 T11:18:38.406Z
# @Author  : HuangChangimport numpy as np
import cv2
from PIL import Image
import pytesseract# 1、將彩色圖片轉換成黑白圖片
##(1) read into  bgr-space
img = cv2.imread("../screenshots/verification_code.png")##(2) convert to hsv-space, then split the channels
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
h, s, v = cv2.split(hsv)##(3) threshold the S channel using adaptive method(`THRESH_OTSU`)
th, threshed = cv2.threshold(s, 100, 255, cv2.THRESH_OTSU | cv2.THRESH_BINARY)##(4) print the thresh, and save the result
print("Thresh : {}".format(th))
cv2.imwrite("../screenshots/verification_code2.png", threshed)# 2、將上步生成的黑白圖片中的需要識別的內容改成黑色,即將圖片進行黑白反相
img2 = cv2.imread("../screenshots/verification_code2.png")
height, width, channels = img2.shape
print("width:%s,height:%s,channels:%s" % (width, height, channels))for row in range(height):for list in range(width):for c in range(channels):pv = img2[row, list, c]img2[row, list, c] = 255 - pv
cv2.imshow("AfterDeal", img2)
cv2.imwrite("../screenshots/verification_code3.png", img2)# 3、讀取驗證碼
img3 = cv2.imread("../screenshots/verification_code3.png")
code_str = pytesseract.image_to_string(img3, lang="eng", config="--psm 8")print(''.join(code_str.split()))

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

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

相關文章

Unity3D項目開發中的資源加密詳解

前言 在Unity3D游戲開發中,保護游戲資源不被非法獲取和篡改是至關重要的一環。資源加密作為一種有效的技術手段,可以幫助開發者維護游戲的知識產權和安全性。本文將詳細介紹Unity3D項目中如何進行資源加密,并提供相應的技術詳解和代碼實現。…

RabbitMQ 在實際應用時要注意的問題

1. 冪等性保障 1.1 冪等性介紹 冪等性是數學和計算機科學中某些運算的性質,它們可以被多次應?,?不會改變初始應?的結果. 應?程序的冪等性介紹 在應?程序中,冪等性就是指對?個系統進?重復調?(相同參數),不論請求多少次,這些請求對系統的影響都是相同的效果. ?如數據庫…

AIGC視頻生成明星——Emu Video模型

大家好,這里是好評筆記,公主號:Goodnote,專欄文章私信限時Free。本文詳細介紹Meta的視頻生成模型Emu Video,作為Meta發布的第二款視頻生成模型,在視頻生成領域發揮關鍵作用。 🌺優質專欄回顧&am…

Debian 上安裝PHP

1、安裝軟件源拓展工具 apt -y install software-properties-common apt-transport-https lsb-release ca-certificates 2、添加 Ond?ej Sur 的 PHP PPA 源,需要按一次回車: add-apt-repository ppa:ondrej/php 3、更新軟件源緩存: apt-g…

office 2019 關閉word窗口后卡死未響應

最近關閉word文件總是出現卡死未響應的狀態,必須從任務管理器才能殺掉word 進程,然后重新打開word再保存,很是麻煩。(#其他特征,在word中打字會特別變慢,敲擊鍵盤半秒才出現字符。) office官網…

SecureUtil.aes數據加密工具類

數據加密、解密工具類 包含map和vo的數據轉換 import cn.hutool.core.bean.BeanUtil; import cn.hutool.crypto.SecureUtil;import java.util.HashMap; import java.util.Map;/*** 數據解析**/ public class ParamUtils {/*** 數據解密** param params 參數* param secretKe…

機器學習:支持向量機

支持向量機(Support Vector Machine)是一種二類分類模型,其基本模型定義為特征空間上的間隔最大的廣義線性分類器,其學習策略便是間隔最大化,最終可轉化為一個凸二次規劃問題的求解。 假設兩類數據可以被 H x : w T x…

SQL-leetcode—1148. 文章瀏覽 I

1148. 文章瀏覽 I Views 表: ---------------------- | Column Name | Type | ---------------------- | article_id | int | | author_id | int | | viewer_id | int | | view_date | date | ---------------------- 此表可能會存在重復行。(換句話說…

k8s資源預留

k8s資源預留 https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/reserve-compute-resources/ vim /var/lib/kubelet/config.yamlenforceNodeAllocatable: - pods kubeReserved: # 配置 kube 資源預留cpu: 500mmemory: 1Giephemeral-storage: 1Gi systemReserved: #…

[STM32 HAL庫]串口空閑中斷+DMA接收不定長數據

一、空閑中斷 STM32的串口具有空閑中斷,什么叫做空閑呢?如何觸發空閑中斷呢? 空閑:串口發送的兩個字符之間間隔非常短,所以在兩個字符之間不叫空閑。空閑的定義是總線上在一個字節的時間內沒有再接收到數據。觸發條件…

Unity Line Renderer Component入門

Overview Line Renderer 組件是 Unity 中用于繪制連續線段的工具。它通過在三維空間中的兩個或兩個以上的點的數組,并在每個點之間繪制一條直線。可以繪制從簡單的直線到復雜的螺旋線等各種圖形。 1. 連續性和獨立線條 連續性:Line Renderer 繪制的線條…

純 Python、Django、FastAPI、Flask、Pyramid、Jupyter、dbt 解析和差異分析

一、純 Python 1.1 基礎概念 Python 是一種高級、通用、解釋型的編程語言,以其簡潔易讀的語法和豐富的標準庫而聞名。“純 Python” 在這里指的是不依賴特定的 Web 框架或數據分析工具,僅使用 Python 原生的功能和標準庫來開發應用程序或執行任務。 1.…

SQL記錄學習日志

刪除表 DROP TABLE:徹底刪除表和其數據,無法恢復。 DROP TABLE IF EXISTS:在刪除之前檢查表是否存在。 TRUNCATE TABLE:刪除所有數據,但保留表的結構。 DELETE:刪除表中的所有數據,但保留表的結…

QT:tftp client 和 Server

1.TFTP簡介 TFTP(Trivial File Transfer Protocol,簡單文件傳輸協議)是TCP/IP協議族中的一個用來在客戶機與服務器之間進行簡單文件傳輸的協議,提供不復雜、開銷不大的文件傳輸服務。端口號為69。 FTP是一個傳輸文件的簡單協議,…

WPF5-x名稱空間

1. x名稱空間2. x名稱空間內容3. x名稱空間內容分類 3.1. x:Name3.2. x:Key3.3. x:Class3.4. x:TypeArguments 4. 總結 1. x名稱空間 “x名稱空間”的x是映射XAML名稱空間時給它取的名字(取XAML的首字母),里面的成員(如x:Class、…

前端jquery 實現文本框輸入出現自動補全提示功能

git倉庫:web_study/some-demos/inputAutoFit at main Cong0925/web_study (github.com) 壓縮包:已綁定到指定資源 示例圖: 實現說明: 1.首先,html部分設置好相關的定位標簽如圖: 2.主要函數 3.默認數據

緩存之美:萬文詳解 Caffeine 實現原理(上)

由于社區最大字數限制,本文章將分為兩篇,第二篇文章為緩存之美:萬文詳解 Caffeine 實現原理(下) 大家好,我是 方圓。文章將采用“總-分-總”的結構對配置固定大小元素驅逐策略的 Caffeine 緩存進行介紹&…

Qt實踐:一個簡單的絲滑側滑欄實現

Qt實踐:一個簡單的絲滑側滑欄實現 筆者前段時間突然看到了側滑欄,覺得這個抽屜式的側滑欄非常的有趣,打算這里首先嘗試實現一個簡單的絲滑側滑欄。 首先是上效果圖 (C,GIF幀率砍到毛都不剩了) QProperty…

工作流引擎Camunda與LiteFlow核心組件對比

以下為 Camunda 7 和 LiteFlow 詳細的介紹,包括它們的核心組件和用途。 1. Camunda 7 詳細介紹 Camunda 7 是一個基于 BPMN 2.0 標準的企業級工作流和決策自動化平臺。它被廣泛應用于復雜業務流程的管理和執行,其核心目標是通過流程自動化來提升企業效…

css動畫水球圖

由于echarts水球圖動畫會導致ios卡頓&#xff0c;所以純css模擬 展示效果 組件 <template><div class"water-box"><div class"water"><div class"progress" :style"{ --newProgress: newProgress % }"><…