2016-08-01 57 views
2

Ich habe den folgenden Code:Wie zu beheben Numpy REFS_OK Flag Fehler?

import cv2 
import numpy as np 
image = cv2.imread('pic1.png', cv2.IMREAD_GRAYSCALE) 

height = 0 
count = 0 
it = np.nditer(image) 
for(x) in it: 
     count += 1 
     if count == 80: 
      count = 0 
      height += 1 
     if x > 400: 
      print("Height is: " + height) 
      break 

Wenn ich versuche, den Code ich folgende Fehlermeldung auszuführen:

TypeError: Iterator operand or requested dtype holds references, but the REFS_OK flag was not enabled 

Warum ich diesen Fehler? Als ich versuchte, es nachzuschlagen, scheint es, als würden die Leute einfach herumarbeiten, anstatt es zu reparieren.

Antwort

0

Überprüfen Sie, ob die zurückgegebene image Variable nicht None ist. Möglicherweise befindet sich das Bild nicht im Pfad, von dem aus das Skript ausgeführt wird. OpenCV löst keine Ausnahme aus, wenn es das Bild nicht lesen/laden kann, gibt aber stattdessen None zurück, in welchem ​​Fall seltsame Ausnahmen auftreten, wenn Sie versuchen, auf dieser None ... wie die Ausnahme ausgeführt zu arbeiten .

(Sorry für das Sprechen wie Yoda ... :-))

+0

Wie würde ich das tun? Dies ist das erste Mal, dass ich mit Python oder OpenCV arbeite. –

+1

Nevermind, ich habe es herausgefunden. Dankbar bin ich;) –