2015-08-30 9 views
6

Chcę utworzyć obraz 16-bitowy. Napisałem więc kod.TypeError: Dane obrazu nie mogą zostać przekształcone w zmienną wartość

 import skimage 
    import random 
    from random import randint       
    xrow=raw_input("Enter the number of rows to be present in image.=>") 
    row=int(xrow) 
    ycolumn=raw_input("Enter the number of columns to be present in image.=>") 
    column=int(ycolumn) 

     A={} 
     for x in xrange(1,row): 
      for y in xrange(1,column): 
       a=randint(0,65535) 
       A[x,y]=a 

     imshow(A) 

Ale gdy uruchamiam ten kod, pojawia się błąd wyświetlający „TypeError: Dane obrazu nie można przekonwertować float” .Is istnieje rozwiązanie dla tego.

Przepraszam za błędy w moim pisaniu, ponieważ jest to moje pierwsze pytanie, które zadałem powyżej.

+1

jest słownikiem, ale jesteś przy założeniu, że jest to typ obrazu na wyświetlaczu. Właśnie dlatego otrzymujesz "TypeError". Jestem jednak bardzo zdezorientowany, ponieważ nie wiem, której biblioteki obrazów używasz. Zaimportowałeś 'scikit-image', ale oznaczyłeś swój post jako używający PIL. Ponadto wywołanie 'imshow' jest niejednoznaczne, ponieważ nie wiem, z którego pakietu pochodzi. Żadne z twoich instrukcji 'import' nie wyjaśnia mi tego. Zmodyfikuj swoje pytanie, aby sprawdzić, z którego pakietu pochodzi 'imshow' i z której biblioteki obrazków chcesz korzystać. BTW, obrazy są indeksowane począwszy od '0'. – rayryeng

Odpowiedz

0

spróbować

import skimage 
import random 
from random import randint 
import numpy as np 
import matplotlib.pyplot as plt 


xrow = raw_input("Enter the number of rows to be present in image.=>") 
row = int(xrow) 
ycolumn = raw_input("Enter the number of columns to be present in image.=>") 
column = int(ycolumn) 

A = np.zeros((row,column)) 
for x in xrange(1, row): 
    for y in xrange(1, column): 
     a = randint(0, 65535) 
     A[x, y] = a 

plt.imshow(A) 
plt.show() 
1

Spróbuj

>>> plt.imshow(im.reshape(im.shape[0], im.shape[1]), cmap=plt.cm.Greys) 
4

Stało się to dla mnie, kiedy próbował wykreślić ImagePath, zamiast samego obrazu. Poprawka polegała na załadowaniu obrazu i wykreśleniu go.

0

To pytanie pojawia się jako pierwsze w wyszukiwarce Google dla tego typu błędu, ale nie ma ogólnej odpowiedzi na temat przyczyny błędu. Unikatowym problemem plakatu było użycie niewłaściwego typu obiektu jako głównego argumentu dla plt.imshow(). Bardziej ogólną odpowiedzią jest to, że plt.imshow() chce mieć tablicę zmiennych, a jeśli nie określisz wartości float, numpy, pandy lub cokolwiek innego, może określić inny typ danych w dowolnym miejscu wzdłuż linii. Można tego uniknąć, podając argument o wartości float dla konstruktora obiektu.

Zobacz Numpy documentation here.

Zobacz `A` Pandas documentation here

Powiązane problemy