相关疑难解决方法(0)

使用python和opencv检测图像中的文本区域

我想使用python 2.7和opencv 2.4.9检测图像的文本区域,并在其周围绘制一个矩形区域.如下面的示例图所示.

我是图像处理的新手,所以任何想法如何做到这一点将不胜感激.

用标记的房间建立蓝图

python ocr opencv image-processing

31
推荐指数
2
解决办法
5万
查看次数

使用pytesseract识别图像中的文本

我需要使用pytesseract从这张图片中提取文字: 在此输入图像描述

和代码:

from PIL import Image, ImageEnhance, ImageFilter
import pytesseract
path = 'pic.gif'
img = Image.open(path)
img = img.convert('RGBA')
pix = img.load()
for y in range(img.size[1]):
    for x in range(img.size[0]):
        if pix[x, y][0] < 102 or pix[x, y][1] < 102 or pix[x, y][2] < 102:
            pix[x, y] = (0, 0, 0, 255)
        else:
            pix[x, y] = (255, 255, 255, 255)
img.save('temp.jpg')
text = pytesseract.image_to_string(Image.open('temp.jpg'))
# os.remove('temp.jpg')
print(text)
Run Code Online (Sandbox Code Playgroud)

而"temp.jpg"就是 在此输入图像描述

还不错,但打印的结果,2 WW 不是正确的文字2HHH,那么如何删除那些黑点呢?

python ocr image pytesser

23
推荐指数
3
解决办法
7万
查看次数

用于 OCR 的清洁图像

我一直在尝试清除 OCR 图像:(线条)

在此处输入图片说明

我需要删除这些行以有时进一步处理图像并且我已经非常接近但很多时间阈值从文本中带走了太多:

    copy = img.copy()
    blur = cv2.GaussianBlur(copy, (9,9), 0)
    thresh = cv2.adaptiveThreshold(blur,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV,11,30)

    kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (9,9))
    dilate = cv2.dilate(thresh, kernel, iterations=2)

    cnts = cv2.findContours(dilate, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
    cnts = cnts[0] if len(cnts) == 2 else cnts[1]

    for c in cnts:
        area = cv2.contourArea(c)
        if area > 300:
            x,y,w,h = cv2.boundingRect(c)
            cv2.rectangle(copy, (x, y), (x + w, y + h), (36,255,12), 3)
Run Code Online (Sandbox Code Playgroud)

编辑:此外,如果字体发生变化,使用常量数字将不起作用。有没有通用的方法来做到这一点?

python ocr opencv image-processing image-segmentation

9
推荐指数
1
解决办法
840
查看次数