2015-08-30 8 views
6

Ich möchte ein 16-Bit-Bild erstellen. Also ich habe einen Code geschrieben.TypeError: Bilddaten können nicht in Float konvertiert werden

 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) 

Aber wenn ich diesen Code ausführen, bekomme ich einen Fehler anzeigt „Typeerror: Die Bilddaten können nicht schwimmen konvertieren“ .Ist es eine Lösung für dieses.

Ich entschuldige mich für die Fehler in meinem Schreiben, da dies meine erste Frage ist, die ich oben gefragt habe.

+1

'A' ein Wörterbuch ist, aber Sie gehen davon aus, dass es sich um einen Bildtyp für die Anzeige ist. Deshalb bekommst du den 'TypeError'. Ich bin jedoch sehr verwirrt, weil ich nicht weiß, welche Bildbibliothek Sie verwenden. Sie haben "scikit-image" importiert, aber Sie haben Ihren Post mit PIL markiert. Außerdem ist der Aufruf 'imshow' mehrdeutig, weil ich nicht weiß, aus welchem ​​Paket er stammt. Keine deiner 'Import'-Aussagen macht mir das klar. Bitte bearbeiten Sie Ihre Frage, um zu entscheiden, welches Paket "imshow" stammt und welche Bildbibliothek Sie für Ihren Beitrag verwenden möchten. BTW, Bilder werden indiziert bei '0'. – rayryeng

Antwort

0

versuchen

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

dieses Versuchen

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

Das ist für mich passiert, wenn ich ein imagePath zu plotten versuchte, statt des Bildes selbst. Die Lösung bestand darin, das Bild zu laden und zu plotten.

0

Diese Frage wird bei der Google-Suche nach diesem Fehlertyp zuerst angezeigt, hat jedoch keine allgemeine Antwort auf die Fehlerursache. Das einzige Problem des Posters war die Verwendung eines unangemessenen Objekttyps als Hauptargument für plt.imshow(). Eine allgemeinere Antwort ist, dass plt.imshow() ein Array von Gleitkommazahlen benötigt und wenn Sie keine float angeben, können numpy, pandas oder was auch immer sonst einen anderen Datentyp irgendwo entlang der Linie ergeben. Sie können dies vermeiden, indem Sie float für das Argument dtype den Konstruktor des Objekts angeben.

Siehe Numpy documentation here.

Siehe Pandas documentation here

Verwandte Themen