title: OpenCV TypeError: contour is not a numpy array, neither a scalar
body: <p>I'm trying to use OpenCV to extract tags from Nike images. This is a tutorial code taken from:</p>
  
  <p><a href="http://opencv-code.com/tutorials/ocr-ing-nikes-new-rsvp-program/" rel="noreferrer">http://opencv-code.com/tutorials/ocr-ing-nikes-new-rsvp-program/</a></p>
  
  <p>I've modified few lines of code though and there is no error in that part (not sure if it's working because I haven't been able to successfully completely run it.)</p>
  
  <p>When I run command 'python a.py'. This error is displayed:-</p>
  
  <pre><code>Traceback (most recent call last):
    File "a.py", line 42, in &lt;module&gt;
      otcnt = [c for c in cnt if cv2.contourArea(c) &lt; 100]
  TypeError: contour is not a numpy array, neither a scalar
  </code></pre>
  
  <p>a.py:-</p>
  
  <pre><code>#!/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) &gt; 5000]
  mask = np.zeros(img0.shape[:2], np.uint8)
  cv2.drawContours(mask, cnt, -1, 255, -1)
  dst = img2 &amp; mask
  cnt = cv2.findContours(dst.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
  otcnt = [c for c in cnt if cv2.contourArea(c) &lt; 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()
  </code></pre>
  
  <p>I'm very new to Python programming (and Python syntax) and I've to do this in Python anyway. I shall be very thankful to you if you can either post the complete correct version of it or finger point which line of code should be replaced with which one. </p>
  
  <p>Thanks</p>
  
  <p>p.s. My first question at stackoverflow so apologies if not following any convention.</p>