ich verwende Python2.7.12 und OpenCV 3.0.0-rc1OpenCV Python: Finden Sie Konturen/Kanten/Rechteck in einem Bild
ich auf einem Texterkennung Projekt arbeite.
Das ist, was ich jetzt habe. Original iamge after findContour, line 34
Wie Sie sehen können, enthält das Bild viele "Boxen", in denen sich der Text befindet.
Mein Ansatz ist es, diese Boxen zu finden, sie in separate Bilder zu schneiden und sie an TesseractOCR zu füttern.
Das Programm behandelt das gesamte Bild als eine Kontur. Wie finde ich den kleineren im Inneren?
Oder, wenn Sie alternativen Ansatz haben, begrüßen
Code:
import cv2
def threshold(im, method):
# make it grayscale
im_gray = cv2.cvtColor(im, cv2.COLOR_RGB2GRAY)
if method == 'fixed':
threshed_im = cv2.threshold(im_gray, 128, 255, cv2.THRESH_BINARY)
elif method == 'mean':
threshed_im = cv2.adaptiveThreshold(im_gray, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 5, 10)
elif method == 'gaussian':
threshed_im = cv2.adaptiveThreshold(im_gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 5, 7)
else:
return None
return threshed_im
image = cv2.imread('demo4.jpg')
# threshold it
thresh = threshold(image, 'mean')
# find contours
_, cnts, hierarchy = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
print len(cnts)
cv2.drawContours(image, cnts, -1, (0, 255, 0), 20)
cv2.imshow('contours', image)
cv2.waitKey()
cv2.drawContours(thresh, cnts, -1, (0, 255, 0), 20)
cv2.imshow('contours', thresh)
cv2.waitKey()
`