2015-08-30 65 views
6

我想創建一個16位圖像。所以我寫了一個代碼。TypeError:圖像數據無法轉換爲浮點數

 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) 

但每當我運行這段代碼,我得到顯示錯誤「類型錯誤:圖像數據無法轉換爲浮動」。就是有這方面的任何解決方案。

我對自己寫的錯誤表示歉意,因爲這是我上面提到的第一個問題。

+1

'A'是一本字典,但我們假定你是,它是用於顯示的圖像類型。這就是你得到'TypeError'的原因。不過,我很困惑,因爲我不知道你使用的是哪個圖像庫。你已經導入了'scikit-image',但是你使用PIL標記了你的文章。另外,'imshow'調用是不明確的,因爲我不知道哪個包是從哪裏來的。沒有任何「進口」聲明對我來說很明顯。請編輯您的問題,以解決'imshow'包的來源以及您想要用於發佈的圖像庫。順便說一句,圖像索引從'0'開始。 – rayryeng

回答

0

嘗試

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

試試這個

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

這事對我來說,當我試圖代替圖像本身繪製的的ImagePath。解決的辦法是加載圖像,並繪製它。

0

這個問題首先出現在谷歌搜索這種類型的錯誤,但沒有關於錯誤原因的一般答案。海報的獨特問題是使用不適合的對象類型作爲plt.imshow()的主要參數。更普遍的答案是,plt.imshow()想要一個浮點數組,如果你沒有指定一個float,numpy,pandas或其他任何東西,可能會推斷出沿線的不同數據類型。您可以通過指定float來避免這種情況,dtype參數是對象的構造函數。

查看Numpy documentation here

Pandas documentation here

相關問題