日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

opencv+python机读卡识别(四)百度API进行数字识别

發布時間:2025/4/16 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 opencv+python机读卡识别(四)百度API进行数字识别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

第一部分預處理:https://my.oschina.net/u/3268732/blog/1236298

第二部分圖像切割:https://my.oschina.net/u/3268732/blog/1236344

第三部分選擇題識別:https://my.oschina.net/u/3268732/blog/1237819

1.對數字圖像部分進行處理 預處理部分同樣需要,步驟與選擇題模塊相似,但目的不同,文字部分主要將數字變粗,便于識別。其實也就是和選擇題模塊相比變了幾個參數

NumImg=cv2.blur(thresh,(15,15)) NumImg=cv2.threshold(NumImg, 170, 255, cv2.THRESH_BINARY)[1]

2.調用百度ocr api 試過多種檢測方式,還是用別人家現成的好http://apistore.baidu.com/ 百度api使用方法: 首先需要注冊一個百度云賬號,這樣在個人中心里就會看到apikey。這個就是和百度進行交流的鑰匙。然后找到百度ocr的入口找到接口地址。雖然這里給出了但還是可以看下文檔,里面有些細節,比如圖片想免費就要300k以內。上面給的python示例代碼是py2的,這里給出py3的方式(http://apis.baidu.com/idl_baidu/baiduocrpay/idlocrpaid)

import sys, urllib, json import urllib.request import urllib.parse import base64 url = 'http://apis.baidu.com/idl_baidu/ocridcard/ocridcard'data = {} data['fromdevice'] = "pc" data['clientip'] = "10.10.10.0" data['detecttype'] = "LocateRecognize" data['languagetype'] = "ENG"#英文模式 data['imagetype'] = "1" #圖片在本地file_object = open('T.png','rb') try:img = file_object.read( ) finally:file_object.close( ) data['image'] =base64.b64encode(img)decoded_data = urllib.parse.urlencode(data) decoded_data = decoded_data.encode('utf-8')req = urllib.request.Request(url,decoded_data)req.add_header("Content-Type", "application/x-www-form-urlencoded") req.add_header("apikey", "這里填入個人中心的apikey") resp = urllib.request.urlopen(req) content = resp.read() if(content):content = json.loads(content.decode())print(content)

3.切割圖片 根據具體情況需要切割圖片才能讓百度api識別,具體限制因素還是圖片大小,切割方式,這里只給出示例

#切割具體位置[起始y:終止y,起始x:終止y] tempimg1=img[240:461,213:939] #圖片切割,width,height分別填入目標寬高 tempimg1 = cv2.resize(tempimg1, (width, height), cv2.INTER_LANCZOS4) #圖片保存,png,jpg格式均可cv2.imwrite("T.png", tempimg1)

之后調用,若識別為英文需要轉化,比如可能將0識別為D,這時轉換即可,如:

def temp(char):if(char=='D'):return '0'

效果如圖展示 當然若是能想辦法去掉答題卡外圍邊框效果應該會更好……

轉載于:https://my.oschina.net/DDigimon/blog/1239954

總結

以上是生活随笔為你收集整理的opencv+python机读卡识别(四)百度API进行数字识别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。