web-dev-qa-db-fra.com

TypeError: les données d'image ne peuvent pas être converties en float

Je veux créer une image 16 bits. Donc j'ai écrit un code. 

     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)

Mais chaque fois que j'exécute ce code, un message d'erreur indiquant "TypeError: les données d'image ne peuvent pas être converties en flottant" s'affiche. 

Je m'excuse pour les erreurs dans mon écriture, car c'est ma première question que j'ai posée ci-dessus.

13
Shubham Chahal

Cela m'est arrivé lorsque j'ai essayé de tracer un chemin imagePath au lieu de l'image elle-même. Le correctif consistait à charger l'image et à la représenter.

11
mastDrinkNimbuPani

Cette question revient en premier dans la recherche Google pour ce type d'erreur, mais n'a pas de réponse générale sur la cause de l'erreur. Le problème unique de l'affiche était l'utilisation d'un type d'objet inapproprié comme principal argument de plt.imshow(). Une réponse plus générale est que plt.imshow() veut un tableau de flottants et que, si vous ne spécifiez pas float, numpy, pandas ou autre, peut déduire un type de données différent quelque part dans la ligne. Vous pouvez éviter cela en spécifiant un float pour l'argument dtype est le constructeur de l'objet.

Voir la documentation Numpy ici .

Voir la documentation Pandas ici

11
comet

L'erreur s'est produite lorsque, sans le savoir, j'ai essayé de tracer le chemin de l'image à la place de l'image.

Mon 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)

Correction: img = cv.imread("fitting.png") ---> CECI IS LE BON USAGE "

1
spurthi

D'après ce que je comprends des documents scikit-image ( http://scikit-image.org/docs/dev/index.html ), imshow () prend un ndarray comme argument, et non un dictionnaire:

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

Peut-être que si vous publiez toute la trace de la pile, nous pourrions voir que le TypeError vient quelque part de profondément de imshow ().

1
Michiel Overtoom

Essaye ça

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

essayer 

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