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