我想创建一个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:图像数据无法转换为浮动”。是否有任何解决方案。
我为我的写作中的错误道歉,因为这是我上面提到的第一个问题。
答案 0 :(得分:17)
这个问题首先出现在谷歌搜索此类型错误中,但没有关于错误原因的一般答案。海报的独特问题是使用不适当的对象类型作为plt.imshow()
的主要参数。更一般的答案是plt.imshow()
需要一系列浮点数,如果你没有指定float
,numpy,pandas或其他任何东西,可能会在某个地方推断出不同的数据类型。您可以通过为float
参数指定dtype
作为对象的构造函数来避免这种情况。
答案 1 :(得分:13)
当我尝试绘制一个imagePath而不是图像本身时,这发生在我身上。解决方法是加载图像并绘制图像。
答案 2 :(得分:3)
我也遇到了这个错误,上面给出的答案说我们应该先上传它们,然后使用它们的名称而不是路径-但是对于Kaggle数据集,这是不可能的。
因此,我想出的解决方案是以mpimg格式循环读取单个图像。在这里,我们可以使用路径,而不仅仅是图像名称。
我希望它能对你们有所帮助。
import matplotlib.image as mpimg
for img in os.listdir("/content/train"):
image = mpimg.imread(path)
plt.imshow(image)
plt.show()
答案 3 :(得分:2)
根据我对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()的深处。
答案 4 :(得分:2)
试试这个
>>> plt.imshow(im.reshape(im.shape[0], im.shape[1]), cmap=plt.cm.Greys)
答案 5 :(得分:2)
当我不知道尝试绘制图像路径而不是图像时发生了错误。
我的代码:
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")
--->这是正确的用法”
答案 6 :(得分:1)
尝试
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 :(得分:1)
我想您可能在Pycharm中遇到了这个问题。如果是这样,您可以尝试解决此问题。
转到Pycharm中的File-Setting-Tools-Python Scientific
,然后删除Show plots in tool window
的选项。
答案 8 :(得分:1)
在我的情况下,image path
是错误的!因此,首先,您可能要检查图像路径是否正确:)
答案 9 :(得分:1)
首先将图像读取为数组
image = plt.imread(//image_path)
plt.imshow(image)
答案 10 :(得分:0)
尝试使用它,
plt.imshow(numpy.real(A))
plt.show()
代替plt.imshow(A)
答案 11 :(得分:0)
关于cv2。
cv2.imread()
期间,您可能未提供正确的文件类型。
例如jpg而不是png。plt.imshow(img_path)
,先尝试cv2.imread(img_path)
,然后再尝试plt.imshow(img)
或cv2.imshow(img)
。
答案 12 :(得分:0)
问题是我的数组是 u3 类型,我将它更改为 float 并且它对我有用。 我有一个带有图像列的数据框,其中包含图像/图片数据。重塑部分取决于人与人之间的关系,他们处理的图像大小为 9126,因此为 96*96。
a = np.array(df_train.iloc[0].Image.split(),dtype='float')
a = a.reshape(96,96)
plt.imshow(a)
答案 13 :(得分:0)
输入应该是数组
plt.imshow(plt.imread('image_path'))