基本上,我试图检测盒子上的标签,这些标签是白色的。每个标签都有自己的序列号和字母。我使用EasyOCR检测数字和字母,但有时EasyOCR不能准确检测文本,但如果我从近距离拍摄图像,它检测得很好。所以,我需要使用图像处理方法裁剪标签区域。之后我会把它交给EasyOCR以获得更好的结果。我愿意接受任何想法!我的示例图像:
pvabu6sv1#
我已经解决了这个问题,裁剪图像的基础上的图像尺寸相对于机架列和机架行.代码是,
import easyocr import cv2 image = cv2.imread('2.jpg') h, w, _ = image.shape rack_rows = 3 rack_cols = 3 total_boxes = [] reader = easyocr.Reader(['en']) for row in range(rack_rows): for col in range(rack_cols): # crop individual boxes based on dimension of image cropped_image = image[row*(int(h/3)) : ((row+1) * int(h/3)),(col*(int(w/3))) : ((col+1)* int(w/3)),:] # resize image based on custom size resize_image = cv2.resize(cropped_image,(800,800)) # write cropped image to feed easyocr cv2.imwrite(f'image{row}_{col}.png',resize_image) # easyocr execution result = reader.readtext(f'image{row}_{col}.png') texts = [detection[1] for detection in result if detection[2] > 0.4] if len(texts[1])!=4: texts.pop(1) total_boxes.append(texts) print(total_boxes)
在这里,我根据自定义尺寸(800,800)调整了图像的大小,以便在尺寸裁剪后提供给easyocr。我没有使用任何图像预处理技术,而不是在这里调整大小。我得到的输出是,
[['S', '5607'], ['N', '4457'], ['U', '4017'], ['P', '4529'], ['X', '3311'], ['J', '2075'], ['W', '8075'], ['M', '9623'], ['K', '5412']]
快乐编码:)
1条答案
按热度按时间pvabu6sv1#
我已经解决了这个问题,裁剪图像的基础上的图像尺寸相对于机架列和机架行.代码是,
在这里,我根据自定义尺寸(800,800)调整了图像的大小,以便在尺寸裁剪后提供给easyocr。我没有使用任何图像预处理技术,而不是在这里调整大小。我得到的输出是,
快乐编码:)