2016-03-31 15 views
0

Ich arbeite an einem 3D-Scanner; mein erster Schritt ist Bild auf Graustufen zu konvertieren:Bild konvertieren Graustufen Python Fehler

from PIL import * 
import scipy 
import scipy.ndimage as ndimage 
import scipy.ndimage.filters as filters 
from numpy import * 
from pylab import * 
import cv2 

cv2.namedWindow("Image") 

image = cv2.imread('/home/mehdi/Bureau/002.jpg') 
im = scipy.misc.imread(image,flatten=1) 
cv2.imshow("Image",im) 
cv2.waitKey(0) 
cv2.destroyALLWindows() 

und dies ist die Fehlermeldung erhalte ich: Sie bekam

`opengl support available 
    Traceback (most recent call last): 
    File "mehdi01.py", line 12, in <module> 
     im = scipy.misc.imread(image,flatten=1) 
     File "/usr/lib/python2.7/dist-packages/scip/misc 
      /pilutil.py", line 97, in imread 
     im = Image.open(name) 
      File "/usr/lib/python2.7/dist-packages/PIL/Image.py", 
     line 1959, in open 
     prefix = fp.read(16) 
      AttributeError: 'numpy.ndarray' object has no attribute 'read' 

`

Antwort

1

Unabhängig von der Fehlermeldung, können Sie erreichen Ihr Ziel, indem Sie die Flagge cv2.IMREAD_GRAYSCALE für cv2.imread() setzen. Um weniger einzugeben, können Sie 0 anstelle von cv2.IMREAD_GRAYSCALE schreiben.

Beachten Sie auch, dass Sie einen Tippfehler in cv2.destroyALLWindows() haben. Ändern Sie ihn auf cv2.destroyAllWindows() statt

So Ihr Code wird einfach:

from numpy import * 
import cv2 

cv2.namedWindow("Image") 
im = cv2.imread('/home/mehdi/Bureau/002.jpg',0) 
cv2.imshow("Image",im) 
cv2.waitKey(0) 
cv2.destroyAllWindows() 

Oder:

from numpy import * 
import cv2 

cv2.namedWindow("Image") 
im = cv2.imread('/home/mehdi/Bureau/002.jpg',cv2.IMREAD_GRAYSCALE) 
cv2.imshow("Image",im) 
cv2.waitKey(0) 
cv2.destroyAllWindows() 
+0

Als Leser Code hatte ich enorm lieber 'cv2.IMREAD_GRAYSCALE' über die magische Konstante "0", was keinen Hinweis darauf gibt, was passiert. –

+1

danke für die Antwort –

Verwandte Themen