opencv+easy ocr:如何读取指定颜色+输出纯数字+re中文匹配

CV4天天各种不兼容……无语

1、如何让easy ocr输出纯数字或者纯英文

参考腾讯社区问答↓

腾讯社区问答https://cloud.tencent.com/developer/ask/sof/260763?from=16139

如果您尝试读取的内容仅是数字,您可以使用allowlist arg限制您的OCR搜索,这可能会改善您的结果。试试这个:

reader.readtext(IMAGE_PATH, allowlist ='0123456789')

如果你试图阅读的内容包含字母字符,但你想忽略它们,那么你可以直接过滤掉它们:

numeric_filter = filter(str.isdigit, my_text)
my_text = "".join(numeric_filter)

(如果您想保留小数,可以向筛选器添加一个额外的条件。)

2、颜色识别

先上HSV颜色阈值

因为opencv读出来的是BGR 然后为了方便颜色值别 改成HSV

imgHSV = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

然后就是按照阈值给颜色标定 比较轻车熟路设定上下限

    #lower = np.array(myColors[0][0:3])#下限
    #upper = np.array(myColors[0][3:6])#上限
    mask = cv2.inRange(imgHSV,lower,upper)

然后分块 然后剪切 然后ocr……

3、中文配对

众所周知re模块配对中文比较麻烦

要么全化成utf8 要么全化成ub2312

2312的转化比较麻烦 要先统一decode 再encode成2312

所以我选择utf-8 直接.encode('utf-8')

pattern = re.compile('度学'.encode('utf-8'))
s1 = j[1].encode('utf-8')

用的是re模块,先用re.compile生成配对块,然后用re.search进行遍历

关于re模块的使用见↓

RE模块详解https://blog.csdn.net/stcaaa/article/details/83864210

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我在上海做厂妹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值