0

This is the code I used to generate CSV file for all images.

"""Generate data.csv from data folder in working directory. """
from cv2 import imread,cvtColor,COLOR_RGB2GRAY,resize
from os import listdir
from numpy import array,savetxt,hstack

data=[]
for c in listdir('data'):
    i = listdir('data').index(c)
    print('Reading',c)
    for sample in listdir('data/'+c):
        path = 'data/' + c + '/' + sample
        img = imread(path)
        #img = cvtColor(img,COLOR_RGB2GRAY)
        img = resize(img,(150,150))
        row = hstack([img.ravel(),i])
        data.append(row)

data = array(data)
savetxt('data.csv',data,delimiter=',',fmt='%i')

i recover this data using

print('Reading data...')
data = genfromtxt('data.csv',delimiter=',')
X = reshape(data[:,:-1],(data.shape[0],150,150,3))
y = data[:,-1]
print('Data: ',X.shape)

when i use imshow function on this data, it shows white box with some random colored pixels, but when i save this with imsave it saves a normal image.

Why it appeared different for imshow?

I imported numpy, opencv and os for these scripts.

2
  • data should be uint8 Commented Mar 10, 2018 at 13:35
  • @Miki, will give a try. Commented Mar 12, 2018 at 12:48

1 Answer 1

1

Since no one answered it so far, imshow from OpenCV displays numpy arrays of dtype=int and of shape (h,w,3) with values between 0 and 255 or dtype=float and values between 0 and 1 and shape (h,w,3). If image is shown as white and some random pixel it could be because of values in range (0,255) but of dtype=float or anything else.

Like suggested by @Miki, changing dtype to uint should solve the problem too.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.