如何使用库识别对象?

时间:2015-12-07 01:53:03

标签: opencv tesseract

你可以帮忙解答一下我的问题吗?

1。 如何检测多个对象?

2。 如何检测我想要的对象?

谢谢!

1 个答案:

答案 0 :(得分:1)

如何将图像分成9个部分并剪切您的部分 感兴趣,将其写入文件,然后在其上运行tesseract。

tesseract myscan.png out

我不知道tesseract如何对内存中的图像进行操作......但您可能会在API文档中找到一些内容吗?

我认为tesseract将返回3行文字,您感兴趣 最后一行中间区域的单词。它有帮助吗? :d

好的我刚刚玩过python tesseract api和python opencv api,并想出了以下内容

import cv2    
import cv2.cv as cv    
import tesseract    

cv.NamedWindow("win")    
img = cv2.imread("GBIAe.jpg") # numpy.ndarray     
height, width, channels = img.shape    

# crop the image     
crop = (2*height/3, width/3)    
roi  = img[crop[0]:height, crop[1]:2*width/3]    

# Convert numpy.ndarray, to cv2.cv.iplimage
bitmap = cv.CreateImageHeader((roi.shape[1], roi.shape[0]), cv.IPL_DEPTH_8U, 3)
cv.SetData(bitmap, roi.tostring(), roi.dtype.itemsize * 3 * roi.shape[1] )    

# Extract the text with tesseract     
api = tesseract.TessBaseAPI()    
api.Init(".","eng", tesseract.OEM_DEFAULT)    
api.SetPageSegMode(tesseract.PSM_AUTO)    
tesseract.SetCvImage( bitmap, api)    
text=api.GetUTF8Text()    
conf=api.MeanTextConf()    
print("text %s" % text)    
api.End()    
cv.ShowImage("win", bitmap)    
cv.WaitKey()    

可以在

找到python tesseract
https://code.google.com/p/python-tesseract/

我在这里找到了numpy数组和iplimage之间的转换:

http://stackoverflow.com/questions/11528009/opencv-converting-from-numpy-to-iplimage-in-python

裁剪给了我“这里是'作为文字。它可能不是你想要的。

Tesseract正在tessdata文件夹中搜索与脚本相同的文件夹中训练有素的语言数据。我刚创建了一个符号链接到/ usr / share / tesseract-ocr / tessdata文件夹。您可能想要设置环境变量等。

可能你应该添加几张图片。也有可能 ocr整个文本,取最后一行,因为你只对最后一行感兴趣,看看哪个单词在中间。

我认为您可以使用上面的代码来实现这两个目标。裁剪区域将为您提供最后一行中间单词的部分或全部文本,然后可以使用该单词从整个图像上使用tesseract获得的最后一行文本中选择完整单词。