如何使用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 文本检测器)