如何使用opencv从图像中检测文本

Posted

技术标签:

【中文标题】如何使用opencv从图像中检测文本【英文标题】:How to detect text from image using opencv 【发布时间】:2021-10-04 12:40:58 【问题描述】:

我想检测图像中的后续文本,但 opencv 无法检测到文本。谁能建议我另一种找到它的方法?

【问题讨论】:

【参考方案1】:

嗯,一种方法是您可以构建自己的卷积神经网络 (CNN) 从图像中检测字母/字母

您可以使用这些代码生成自己的数据库,此代码将生成特定字母的图像

您可能需要修改代码,因为它可能没有给定路径的文件夹,并且您可能需要处理一些硬代码值(静态)

import os
import matplotlib.font_manager
from PIL import Image, ImageDraw , ImageFont
    
def rotate_image(image_to_rotate, font_index, parent_folder):
    src_im = Image.open(image_to_rotate)
    angle = 0
    while(angle < 15):
        angle += 5
        size = 320, 320
        dst_im = Image.new("RGBA", (320,320), "black" )
        im = src_im.convert('RGBA')
        rot = im.rotate( angle, expand=1 ).resize(size)
        dst_im.paste( rot, (0, 0), rot )
        r_img_dir = "%s\%s%s%s%s" % ( parent_folder, str(fonts.index(font)).zfill(5), "_rotated_by_", str(angle), ".png")
        dst_im.save(r_img_dir)
        
chars = [] 
for i in range(65,91): # Fix me 
    chars.append(chr(i))

for k in range(10):
    chars.append(k)

for ch in chars: # Remove me [:1]
    char= str(ch) # Fix me use instance of to check if int or Str ..     
    os.makedirs(os.path.join('folder', char)) # Fix me 
    fonts = matplotlib.font_manager.findSystemFonts(fontpaths=None, fontext='ttf')
    p_folder =  "%s\%s" % ( 'folder', char )
    font_count =0 
    for font in fonts:  # Remove me  [:10]
        get_str_for_spt = font[0:17]
        font_name = font.replace(get_str_for_spt,"")
        font_count += 1
        if font_count > 10:
            break
        img = Image.new('RGB', (320, 320), color = (0,0,0))  # make it - 16x16 in place of 32x32
        d = ImageDraw.Draw(img)
        img_font = ImageFont.truetype(font, 300)  # make it 12 in place of 16
        d.text((0,0),char, font=img_font)
        img_save_dir = "%s\%s_%s%s" % ( p_folder, str(fonts.index(font)).zfill(5),font_name, ".png")
        img.save(img_save_dir)
        rotate_image(img_save_dir, str(fonts.index(font)).zfill(5), p_folder)

print("Executed")

您也可以参考以下链接

https://www.geeksforgeeks.org/text-detection-and-extraction-using-opencv-and-ocr/

Detect text area in an image using python and opencv

Detect text region in image using Opencv

How to process and extract text from image

【讨论】:

以上是关于如何使用opencv从图像中检测文本的主要内容,如果未能解决你的问题,请参考以下文章

文本检测实战:使用OpenCV实现文本检测(EAST 文本检测器)

如何使用 OpenCV 从图像中检测旋转对象?

如何使用 OpenCV 从图像中提取文本行

使用Python,OpenCV应用EAST文本检测器检测自然场景图像中的文本

如何使用 OpenCV 进行 OCR 和文本检测识别

如何从底部填充图像,直到使用 OpenCV 检测到边缘?