web-dev-qa-db-ja.com

TypeError:画像データはフロートに変換できません

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:Image data can not convert to float」というエラーが表示されます。これに対する解決策はありますか。

これは私が上で尋ねた最初の質問であるので、私は私の記事の間違いをおpびします。

20
Shubham Chahal

この質問は、このタイプのエラーのGoogle検索で最初に表示されますが、エラーの原因に関する一般的な回答はありません。ポスターのユニークな問題は、plt.imshow()の主な引数として不適切なオブジェクトタイプを使用することでした。より一般的な答えは、plt.imshow()はfloatの配列を必要とし、float、numpy、pandasなどを指定しないと、行のどこかに異なるデータ型が推測される可能性があるということです。これを回避するには、floatdtypeを指定します。引数はオブジェクトのコンストラクターです。

Numpyのドキュメントはこちら を参照してください。

Pandasのドキュメントはこちら を参照してください

19
comet

これは、画像自体ではなく、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)

修正:img = cv.imread("fitting.png") --->これIS正しい使用法」

3
spurthi

Scikit-image docs( 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()のどこか深いところにあることがわかります。

2

これを試して

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

試してみる

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
ntg