2016-03-31 57 views
0

我正在研究3D掃描儀;我的第一個步驟是將圖像轉換爲灰度:轉換圖像灰度python錯誤

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() 

,這是錯誤消息我得到:

`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' 

`

回答

1

不管你得到了錯誤信息,可以達到您的目標是將cv2.IMREAD_GRAYSCALE設置爲cv2.imread()。要輸入更少,您可以編寫0而不是cv2.IMREAD_GRAYSCALE

還請注意,您在cv2.destroyALLWindows()有一個錯字。將其更改爲cv2.destroyAllWindows(),而不是

所以,你的代碼變得簡單:

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() 

或者:

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

作爲代碼的讀者,我會更喜歡巨大'cv2.IMREAD_GRAYSCALE'在魔術常量'0',這並沒有給出任何線索發生的事情。 –

+1

感謝您的回答 –