做防水广告在哪个网站最好,h5页面开发用什么工具,网站开发大作业报告,郑州中企业网站建设我正在尝试识别车牌#xff0c;但出现了错误#xff0c;例如错误/未读取字符
以下是每个步骤的可视化#xff1a;
从颜色阈值变形关闭获得遮罩
以绿色突出显示的车牌轮廓过滤器
将板轮廓粘贴到空白遮罩上
Tesseract OCR的预期结果 BP 1309 GD 但我得到的结果是 BP 1309…我正在尝试识别车牌但出现了错误例如错误/未读取字符
以下是每个步骤的可视化
从颜色阈值变形关闭获得遮罩
以绿色突出显示的车牌轮廓过滤器
将板轮廓粘贴到空白遮罩上
Tesseract OCR的预期结果 BP 1309 GD 但我得到的结果是 BP 1309 6D 我试着把轮廓切成3片
是的它是有效的但如果我在这个方法中插入差异图像一些图像就无法识别比如这个
字母N不可识别但如果使用第一种方法它会起作用
这是程序
import numpy as np
import pytesseract
import cv2
import ospytesseract.pytesseract.tesseract_cmd rC:\Program Files\Tesseract-OCR\tesseract.exe
image_path datafor nama_file in sorted(os.listdir(image_path)):print(nama_file)# Load image, create blank mask, convert to HSV, define thresholds, color thresholdI cv2.imread(os.path.join(image_path, nama_file))dim (500, 120)I cv2.resize(I, dim, interpolation cv2.INTER_AREA)(thresh, image) cv2.threshold(I, 127, 255, cv2.THRESH_BINARY)result np.zeros(image.shape, dtypenp.uint8)result 255 - resulthsv cv2.cvtColor(image, cv2.COLOR_BGR2HSV)lower np.array([0,0,0])upper np.array([179,100,130])mask cv2.inRange(hsv, lower, upper)slices []slices.append(result.copy())slices.append(result.copy())slices.append(result.copy())i 0j 0xs []# Perform morph close and merge for 3-channel ROI extractionkernel cv2.getStructuringElement(cv2.MORPH_RECT, (3,3))close cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel, iterations1)extract cv2.merge([close,close,close])# Find contours, filter using contour area, and extract using Numpy slicingcnts cv2.findContours(close, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)cnts cnts[0] if len(cnts) 2 else cnts[1]boundingBoxes [cv2.boundingRect(c) for c in cnts](cnts, boundingBoxes) zip(*sorted(zip(cnts, boundingBoxes),keylambda b:b[1][0], reverseFalse))for c in cnts:x,y,w,h cv2.boundingRect(c)area w * hras format(w / h, .2f)if h 40 and h 70 and w 10 and w 65 and float(ras) 1.3:cv2.rectangle(I, (x, y), (x w, y h), (36,255,12), 3)result[y:yh, x:xw] extract[y:yh, x:xw]# Slicexs.append(x)if i 0:if (xs[i] - xs[i-1]) 63:j j1i i 1slices[j][y:yh, x:xw] extract[y:yh, x:xw]# Split throw into Pytesseractj0for s in slices:cv2.imshow(result, s)cv2.waitKey()if j ! 1 :data pytesseract.image_to_string(s, langeng,config--psm 6 _char_whitelistABCDEFGHIJKLMNOPQRTUVWXYZ)else :data pytesseract.image_to_string(s, langeng,config--psm 6 _char_whitelist1234567890)print(data)# Block throw into Pytesseractdata pytesseract.image_to_string(result, langeng,config--psm 6)print(data)cv2.imshow(image, I)cv2.imshow(close, close)cv2.imshow(extract, extract)cv2.imshow(result, result)cv2.waitKey()我尝试了很多方法找到了一些解决方案
应用扩张形态学操作使字母变薄
# Split throw into Pytesseract
j0
for s in slices:cv2.imshow(result, s)cv2.waitKey(1)if j ! 1:data pytesseract.image_to_string(s, config-c tessedit_char_whitelistABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 psm 6 )if data: s cv2.dilate(s, cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5,5)))cv2.imshow(cv2.dilate(s), s)cv2.waitKey(1)data pytesseract.image_to_string(s, config-c tessedit_char_whitelistABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 psm 6 )else:pytesseract.pytesseract.tessedit_char_whitelist 1234567890data pytesseract.image_to_string(s, langeng,config psm 6 _char_whitelist1234567890)print(data)这种行为很奇怪。 有很多投诉建议的解决方案不起作用
至少我学会了如何使用_char_whitelist选项您需要添加-c tessedit
我认为该解决方案不够健壮可能是偶然工作。 我认为在当前版本的Tesseract中没有简单的解决方案