Create Numpy array of images

前端 未结 4 1635
臣服心动
臣服心动 2021-01-31 06:01

I have some (950) 150x150x3 .jpg image files that I want to read into an Numpy array.

Following is my code:

X_data = []
files = glob.glob (\"*.jpg\")
fo         


        
4条回答
  •  不知归路
    2021-01-31 06:26

    Here is a solution for images that have certain special Unicode characters, or if we are working with PNGs with a transparency layer, which are two cases that I had to handle with my dataset. In addition, if there are any images that aren't of the desired resolution, they will not be added to the Numpy array. This uses the Pillow package instead of cv2.

    resolution = 150
    
    import glob
    import numpy as np
    from PIL import Image
    
    X_data = []
    files = glob.glob(r"D:\Pictures\*.png")
    for my_file in files:
        print(my_file)
        
        image = Image.open(my_file).convert('RGB')
        image = np.array(image)
        if image is None or image.shape != (resolution, resolution, 3):
            print(f'This image is bad: {myFile} {image.shape if image is not None else "None"}')
        else:
            X_data.append(image)
    
    print('X_data shape:', np.array(X_data).shape)
    # If you have 950 150x150 images, this would print 'X_data shape: (950, 150, 150, 3)'
    

    If you aren't using Python 3.6+, you can replace the r-string with a regular string (except with \\ instead of \, if you're using Windows), and the f-string with regular string interpolation.

提交回复
热议问题