TypeError: данные изображения не могут преобразовываться в float

Я хочу создать 16-битное изображение. Поэтому я написал код.

     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)

Но всякий раз, когда я запускаю этот код, я получаю сообщение об ошибке "TypeError: данные изображения не могут преобразовать в float". Есть ли какое-либо решение для этого.

Я извиняюсь за ошибки в моей записи, так как это мой первый вопрос, который я задал выше.

Ответ 1

Этот вопрос возникает первым в поиске Google для этой ошибки типа, но не имеет общего ответа о причине ошибки. Уникальной проблемой автора было использование неподходящего типа объекта в качестве основного аргумента для plt.imshow(). Более общий ответ заключается в том, что plt.imshow() хочет массив чисел с плавающей точкой, и, если вы не укажете float, numpy, pandas или что-либо еще, вы можете определить другой тип данных где-нибудь вдоль линии. Вы можете избежать этого, указав float для аргумента dtype конструктор объекта.

См. документацию Numpy здесь.

Смотрите документацию по Pandas здесь

Ответ 2

Это произошло для меня, когда я пытался построить imagePath вместо самого изображения. Исправлена ​​ошибка загрузки изображения и его создания.

Ответ 3

Ошибка произошла, когда я, не зная, попытался построить путь изображения вместо изображения.

Мой код:

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)

Исправление: img = cv.imread("fitting.png") ---> ЭТО ПРАВИЛЬНОЕ ИСПОЛЬЗОВАНИЕ "

Ответ 4

Из того, что я понимаю в документах scikit-image (http://scikit-image.org/docs/dev/index.html), imshow() принимает ndarray как аргумент, а не словарь:

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

Возможно, если вы разместите всю трассировку стека, мы увидим, что TypeError находится где-то глубоко от imshow().

Ответ 5

Попробуйте это

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

Ответ 6

попробуйте

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

Ответ 7

Попробуйте использовать это, plt.imshow(numpy.real (А)) plt.show()

вместо plt.imshow(A)