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びします。
この質問は、このタイプのエラーのGoogle検索で最初に表示されますが、エラーの原因に関する一般的な回答はありません。ポスターのユニークな問題は、plt.imshow()
の主な引数として不適切なオブジェクトタイプを使用することでした。より一般的な答えは、plt.imshow()
はfloatの配列を必要とし、float
、numpy、pandasなどを指定しないと、行のどこかに異なるデータ型が推測される可能性があるということです。これを回避するには、float
にdtype
を指定します。引数はオブジェクトのコンストラクターです。
Numpyのドキュメントはこちら を参照してください。
Pandasのドキュメントはこちら を参照してください
これは、画像自体ではなく、imagePathをプロットしようとしたときに起こりました。修正は、画像を読み込んでプロットすることでした。
画像の代わりに画像パスをプロットしようと知らずにエラーが発生しました。
私のコード:
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正しい使用法」
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()のどこか深いところにあることがわかります。
これを試して
>>> plt.imshow(im.reshape(im.shape[0], im.shape[1]), cmap=plt.cm.Greys)
試してみる
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()