2016-03-31 59 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

感谢您的回答 –