title: Python TypeError: UMat() missing required argument 'ranges' (pos 2)
body: <p>I am writing a facial recognition program and I keep getting this error, and I am just very confused I see no other examples on the web where people include ranges when converting to UMat</p>
  
  <pre><code>    Traceback (most recent call last):
    File "test.py", line 48, in &lt;module&gt;
      test_photos()
    File "test.py", line 40, in test_photos
      face, rect = detect_face(test_photo)
    File "test.py", line 15, in detect_face
      imgUMat = cv2.UMat(img)
  TypeError: UMat() missing required argument 'ranges' (pos 2)
  </code></pre>
  
  <p>my code is </p>
  
  <pre><code>def detect_face(img):   
      imgUMat = cv2.UMat(img)
      gray = cv2.cvtColor(imgUMat, cv2.COLOR_BGR2GRAY)
      face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_default.xml")
      faces = face_cascade.detectMultiScale(gray, scaleFactor=1.2, minNeighbors=5)
      if (len(faces)==0):
          return None, None
      (x, y, w, h) = faces[0]
      gray = gray.get()
      return gray[y:y+h,x:x+w], faces[0]
  
  def prepare_training_data():
      faces = []
      labels = []
      for img in photo_name_list: #a collection of file locations as strings
          image = cv2.imread(img)
          face, rect = detect_face(image)
          if face is not None:
              faces.append(face)
              labels.append(me)
      return faces, labels
  
  def test_photos():
      face_recognizer = cv2.face.LBPHFaceRecognizer_create()
      faces, labels = prepare_training_data()
      face_recognizer.train(np.array(faces), np.array(labels))
      face, rect = detect_face(test_photo)
      label = face_recognizer.predict(face)
      if label == me:
          print("it's me")
      else:
          print("it's not me")
  
  
  test_photos()
  </code></pre>
  
  <p>if I do not use UMat() then I get this error:</p>
  
  <pre><code>Traceback (most recent call last):
    File "test.py", line 48, in &lt;module&gt;
      test_photos()
    File "test.py", line 40, in test_photos
      face, rect = detect_face(test_photo)
    File "test.py", line 16, in detect_face
      gray = cv2.cvtColor(imgUMat, cv2.COLOR_BGR2GRAY)
  TypeError: Expected cv::UMat for argument 'src'
  </code></pre>
  
  <p>I am using OpenCV 4.0.0, and to be honest I just very confused because from what I have seen no one else had to use UMat to use cvtColor(), let alone use ranges inside UMat(). Any help would be greatly appreciated.</p>