TypeError:图像数据无法转换为float

Shu*_*hal 22 python image image-processing python-imaging-library

我想创建一个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)
Run Code Online (Sandbox Code Playgroud)

但每当我运行此代码时,我得到一个错误显示"TypeError:图像数据无法转换为浮动".是否有任何解决方案.

我为我的写作中的错误道歉,因为这是我上面提到的第一个问题.

小智 20

这个问题首先出现在谷歌搜索此类型错误中,但没有关于错误原因的一般答案.海报的独特问题是使用不合适的对象类型作为主要参数plt.imshow().更一般的答案是plt.imshow()想要一个浮点数组,如果你没有指定a float,numpy,pandas或其他任何东西,可能会在该行的某处推断出不同的数据类型.您可以通过指定避免这种情况floatdtype参数是对象的构造.

请参阅此处Numpy文档.

请参阅此处Pandas文档


mas*_*ani 14

当我试图绘制一个imagePath而不是图像本身时,这发生在我身上.解决方法是加载图像并绘制图像.


小智 14

当我在不知不觉中尝试绘制图像路径而不是图像时发生错误。

我的代码:

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)
Run Code Online (Sandbox Code Playgroud)

更正: img = cv.imread("fitting.png")--->这是正确的用法”


Yas*_*ala 10

首先将图像读取为数组

image = plt.imread(//image_path)
plt.imshow(image)
Run Code Online (Sandbox Code Playgroud)

  • 由于这是一个较旧的问题,有很多答案,您能否提供信息来说明为什么这个答案比之前的许多答案更好,其中一些答案包含更多的解释? (3认同)

小智 5

我也遇到了这个错误,上面给出的答案说我们应该先上传它们,然后使用它们的名称而不是路径 - 但对于 Kaggle 数据集,这是不可能的。

因此,我想出的解决方案是以 mpimg 格式循环读取单个图像。在这里我们可以使用路径而不仅仅是图像名称。

我希望它会帮助你们。

import matplotlib.image as mpimg
for img in os.listdir("/content/train"): 
  image = mpimg.imread(path)
  plt.imshow(image)
  plt.show()
Run Code Online (Sandbox Code Playgroud)


Mic*_*oom 3

根据我对 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() 深处的某个地方。