2017-02-26 5 views
1

im auf einem OCR-Projekt arbeiten und ich hier tue Hand geschrieben Ziffernerkennung das Problem, das ich habe, ist mit der Funktion findcontours():zu viele Werte entpacken, Python, findcontours

# Import the modules 
import cv2 
from sklearn.externals import joblib 
from skimage.feature import hog 
import numpy as np 

# Load the classifier 
clf = joblib.load("digits_cls.pkl") 

# Read the input image 
im = cv2.imread("photo_2.jpg") 

# Convert to grayscale and apply Gaussian filtering 
im_gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY) 
im_gray = cv2.GaussianBlur(im_gray, (5, 5), 0) 

# Threshold the image 
ret, im_th = cv2.threshold(im_gray, 90, 255, cv2.THRESH_BINARY_INV) 

# Find contours in the image 
ctrs, hier = cv2.findContours(im_th.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) 

# Get rectangles contains each contour 
rects = [cv2.boundingRect(ctr) for ctr in ctrs] 
+0

die Fehler: Zu viele zu entpackende Werte werden von der findContours-Linie verursacht! –

Antwort

0

Die documentation example on findContours zeigt, dass die function gibt drei Werte zurück (oder technischer ausgedrückt gibt es ein Tupel mit drei Werten zurück).

aber Sie haben nur zwei:

ctrs, hier = cv2.findContours(im_th.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) 

Sie es ändern könnte:

_, ctrs, hier = cv2.findContours(im_th.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) 

Sie unter der Annahme, nicht die erste brauchen nur die Konturen und Hierarchie

Verwandte Themen