OpenCV TypeError: contour n'est pas un tableau numpy, ni un scalaire

Je suis en train d'utiliser OpenCV pour extraire les balises de Nike images. Ceci est un tutoriel code tiré de:

http://opencv-code.com/tutorials/ocr-ing-nikes-new-rsvp-program/

J'ai modifié quelques lignes de code et si il n'y a pas d'erreur dans la partie (je ne sais pas si ça fonctionne car je n'ai pas réussi à complètement l'exécuter.)

Quand je lance la commande " python un.py'. Cette erreur est affiché:-

Traceback (most recent call last):
  File "a.py", line 42, in <module>
    otcnt = [c for c in cnt if cv2.contourArea(c) < 100]
TypeError: contour is not a numpy array, neither a scalar

un.py:-

#!/usr/bin/env python
import numpy as np
import cv2
import cv2.cv as cv
def do_ocr(img0):
pass
if __name__ == "__main__":
img0 = cv2.imread('nike-1.jpg')
if img0 == None:
import sys
sys.exit()
do_ocr(img0)
img1 = cv2.cvtColor(img0, cv2.COLOR_BGR2GRAY)
img2 = cv2.adaptiveThreshold(img1, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, 45, 0)
size = np.size(img2)
skel = np.zeros(img2.shape,np.uint8)
ret,img2 = cv2.threshold(img2,127,255,0)
element = cv2.getStructuringElement(cv2.MORPH_CROSS,(3,3))
done = False 
while( not done):
eroded = cv2.erode(img2,element)
temp = cv2.dilate(eroded,element)
temp = cv2.subtract(img2,temp)
skel = cv2.bitwise_or(skel,temp)
img2 = eroded.copy()
zeros = size - cv2.countNonZero(img2)
if zeros==size:
done = True
img3 = img2
img4 = cv2.copyMakeBorder(img3, 1, 1, 1, 1, cv2.BORDER_CONSTANT, value=0)
cv2.floodFill(img4, None, (0,0), 255)
img5 = cv2.erode(255-img4, np.ones((3,3), np.uint8), iterations=2)
cnt = cv2.findContours(img5, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)[0]
cnt = [c for c in cnt if cv2.contourArea(c) > 5000]
mask = np.zeros(img0.shape[:2], np.uint8)
cv2.drawContours(mask, cnt, -1, 255, -1)
dst = img2 & mask
cnt = cv2.findContours(dst.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
otcnt = [c for c in cnt if cv2.contourArea(c) < 100]
cv2.drawContours(dst, otcnt, -1, 0, -1)
api = tesseract.TessBaseAPI()
api.Init(".", "eng", tesseract.OEM_DEFAULT)
api.SetVariable("tessedit_char_whitelist", "#ABCDEFGHIJKLMNOPQRSTUVWXYZ")
api.SetPageSegMode(tesseract.PSM_SINGLE_LINE)
image = cv.CreateImageHeader(dst.shape[:2], cv.IPL_DEPTH_8U, 1)
cv.SetData(image, dst.tostring(), dst.dtype.itemsize * dst.shape[1])
tesseract.SetCvImage(image, api)
print api.GetUTF8Text().string()

Je suis très nouveau à la programmation Python (et la syntaxe de Python) et je n'ai qu'à le faire en Python de toute façon. Je vous serais très reconnaissant si vous pouvez soit envoyer le complet version correcte de l'informatique ou du doigt point de la ligne de code qui doit être remplacé par qui.

Grâce

p.s. Ma première question sur stackoverflow alors, toutes mes excuses si pas à la suite de toute convention.

Erreur: ModuleNotFoundError: Pas de module nommé " cv2.cv

OriginalL'auteur Omar Tariq | 2013-07-13