it-swarm.com.de

TypeError: Bilddaten können nicht in Float konvertiert werden

Ich möchte ein 16-Bit-Bild erstellen. Also habe ich einen Code geschrieben. 

     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, erhalte ich eine Fehlermeldung mit der Anzeige von "TypeError: Bilddaten können nicht in Float konvertiert werden". Gibt es eine Lösung dafür? 

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

13
Shubham Chahal

Dies passierte für mich, als ich versuchte, einen imagePath anstelle des Bildes selbst zu zeichnen. Das Update bestand darin, das Bild zu laden und es zu zeichnen.

11

Diese Frage steht bei der Google-Suche nach diesem Typfehler an erster Stelle, hat jedoch keine allgemeine Antwort auf die Fehlerursache. Das besondere Problem des Posters war die Verwendung eines ungeeigneten Objekttyps als Hauptargument für plt.imshow(). Eine allgemeinere Antwort lautet, dass plt.imshow() ein Array von Floats haben möchte und wenn Sie keine float, numpy, pandas oder was auch immer angeben, einen anderen Datentyp irgendwo entlang der Zeile ableiten. Sie können dies vermeiden, indem Sie eine float angeben. Das dtype-Argument ist der Konstruktor des Objekts.

Siehe die Numpy-Dokumentation hier .

Siehe die Pandas Dokumentation hier

11
comet

Der Fehler trat auf, als ich nicht wusste, wie der Bildpfad statt des Bildes geplottet wurde.

Mein Code:

import cv2 as cv
from matplotlib import pyplot as plt
import pytesseract
from resizeimage import resizeimage

img = cv.imread("D:\TemplateMatch\\fitting.png") ------>"THIS IS THE WRONG USAGE"
#cv.rectangle(img,(29,2496),(604,2992),(255,0,0),5)
plt.imshow(img)

Korrektur: img = cv.imread("fitting.png") ---> DIESES IS DIE RECHTE VERWENDUNG "

1
spurthi

Nach dem, was ich unter den Scikit-Image-Dokumenten ( http://scikit-image.org/docs/dev/index.html ) verstehe, verwendet imshow () ein ndarray als Argument und nicht ein Wörterbuch:

http://scikit-image.org/docs/dev/api/skimage.io.html?highlight=imshow#skimage.io.imshow

Wenn Sie den gesamten Stack-Trace posten, könnten wir vielleicht sehen, dass der TypeError irgendwo tief in imshow () steckt.

1

Versuche dies

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

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