简体   繁体   中英

convert image gray scale python error

I'm working on a 3D scanner; my first step is to convert image to gray scale:

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

and this is the error message I get:

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

`

Regardless of the error message you got, you can reach your goal by setting the flag cv2.IMREAD_GRAYSCALE for cv2.imread() . To type less, you can write 0 instead of cv2.IMREAD_GRAYSCALE .

Note also that you have a typo in cv2.destroyALLWindows() . Change it to cv2.destroyAllWindows() instead

So your code becomes simply:

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

Or:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM