使用python从图像中提取特定颜色的文本

时间:2019-04-15 09:12:38

标签: python-3.x image image-processing cv2 text-extraction

我正在尝试使用cv2和pytesseract从图像中提取红色文本。目前,我能够从图像中提取一些文本,但不能提取所有文本。请帮助我提取文本。

https://www.google.com/imgres?imgurl=http%3A%2F%2Fwww.artitudesdesign.com%2Fwp-content%2Fuploads%2F2017%2F11%2FRed-logos.jpg&imgrefurl=http%3A%2F%2Fwww.artitudesdesign.com%2Fred-color-psychology%2F&docid=0HhQAS-gvyYR_M&tbnid=3EsghyOLX8OBhM%3A&vet=10ahUKEwiYjevO09HhAhXr4nMBHVTNCIEQMwhwKCQwJA..i&w=3000&h=1864&safe=active&bih=644&biw=1016&q=image%20with%20red%20text&ved=0ahUKEwiYjevO09HhAhXr4nMBHVTNCIEQMwhwKCQwJA&iact=mrc&uact=8

import cv2

import numpy as np

import matplotlib.pyplot as plt

import os

os.chdir('C:/Abhinav/Documents/POC')

img = cv2.imread('images.jpg')


plt.imshow(img)


hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

plt.imshow(hsv)


# Range for lower red
lower_red = np.array([0,120,70])
upper_red = np.array([10,255,255])
mask1 = cv2.inRange(hsv, lower_red,upper_red)

# Range for upper range
lower_red = np.array([170,120,70])
upper_red = np.array([180,255,255])
mask2 = cv2.inRange(hsv,lower_red,upper_red)

# Generating the final mask to detect red color
mask1 = mask1+mask2

#identify text with black background
dst1 = cv2.bitwise_and(img, img, mask=mask1)

#identify text with grey scale image
res2 = cv2.bitwise_not(mask1)

plt.imshow(dst1)

plt.imshow(res2)

cv2.imwrite("dst1.jpg", dst1)

cv2.imwrite("res2.jpg", res2)


from PIL import Image 
import pytesseract

pytesseract.pytesseract.tesseract_cmd = r"C:\Abhinav\AppData\Local\Tesseract-OCR\tesseract.exe"

text1 = str(((pytesseract.image_to_string(Image.open("res2.jpg"),lang = 'eng'))))

text2 = str(((pytesseract.image_to_string(Image.open("dst1.jpg"),lang = 'eng'))))

print(text1)

print(text2)

目前,我的成绩低于预期 打印(文本1) ¥c作为3M Sahre& 佳能avis

DSSS 我们NGF ©TG nnsn

print(text2) fe Dans&BY ora eS ROC]广告

L垄断| LAS) 嫩

我还想要可口可乐,丰田等字眼。同样,我也无法理解text2的输出(即打印结果所用的语言)。

0 个答案:

没有答案