如何解决如何使用 opencv
我想从图像中检测后续文本,但 opencv 无法检测到文本。谁能建议我另一种找到它的方法?
解决方法
嗯,一种方法可以是你建立自己的卷积神经网络(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',color = (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,char,font=img_font)
img_save_dir = "%s\%s_%s%s" % ( p_folder,font_name,".png")
img.save(img_save_dir)
rotate_image(img_save_dir,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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。