2017-06-10 47 views
0

この質問に添付されている奥行き画像から手を分割しようとしています。このプロセスでは、画像のヒストグラムを最初に処理した後、処理された画像をメディアンフィルタリングする以下のコードを書きました。しかし、このコードは、それを解決しようと努力した後でさえ、エラーを連続的に与えています。TypeError:画像データをplt.imshow()でfloatに変換できません

import numpy as np 
    import matplotlib 
    import matplotlib.pyplot as plt 
    import matplotlib.image as mpimg 
    import scipy 
    from scipy import ndimage, misc 
    from scipy.misc import imshow 
    import skimage 
    img = mpimg.imread('C:/Users/Prachi/Desktop/kinect_leap_dataset/acquisitions/P1/G1/1_depth.png') 
    plt.hist(img.ravel(), bins=256, range=(0.0, 1.0)) 
    plt.show() 
    imgplot = plt.imshow(img, clim=(0.064, 0.068)) 
    #plt.axis('off') 
    plt.show() 
    mod_img = ndimage.median_filter(imgplot, 20) 
    plt.imshow(mod_img) 
    plt.show() 

これはエラーです。このエラーを解決するのを助けてください。私はこのエラーに関する各スレッドをチェックしましたが、解決には成功しませんでした。 コードが中央値フィルタリングをやっているようですが、エラーがライン上で発生しているとして、画像を表示することができません。

plt.imshow(mod_img) 

--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 
<ipython-input-129-8482175fdf0e> in <module>() 
    16 plt.show() 
    17 mod_img = ndimage.median_filter(imgplot, 20) 
---> 18 plt.imshow(mod_img) 
    19 plt.show() 

C:\Users\Prachi\AppData\Local\Programs\Python\Python36-32\Anaconda3\lib\site-packages\matplotlib\pyplot.py in imshow(X, cmap, norm, aspect, interpolation, alpha, vmin, vmax, origin, extent, shape, filternorm, filterrad, imlim, resample, url, hold, data, **kwargs) 
    3155       filternorm=filternorm, filterrad=filterrad, 
    3156       imlim=imlim, resample=resample, url=url, data=data, 
-> 3157       **kwargs) 
    3158  finally: 
    3159   ax._hold = washold 

C:\Users\Prachi\AppData\Local\Programs\Python\Python36-32\Anaconda3\lib\site-packages\matplotlib\__init__.py in inner(ax, *args, **kwargs) 
    1895      warnings.warn(msg % (label_namer, func.__name__), 
    1896         RuntimeWarning, stacklevel=2) 
-> 1897    return func(ax, *args, **kwargs) 
    1898   pre_doc = inner.__doc__ 
    1899   if pre_doc is None: 

C:\Users\Prachi\AppData\Local\Programs\Python\Python36-32\Anaconda3\lib\site-packages\matplotlib\axes\_axes.py in imshow(self, X, cmap, norm, aspect, interpolation, alpha, vmin, vmax, origin, extent, shape, filternorm, filterrad, imlim, resample, url, **kwargs) 
    5122        resample=resample, **kwargs) 
    5123 
-> 5124   im.set_data(X) 
    5125   im.set_alpha(alpha) 
    5126   if im.get_clip_path() is None: 

C:\Users\Prachi\AppData\Local\Programs\Python\Python36-32\Anaconda3\lib\site-packages\matplotlib\image.py in set_data(self, A) 
    594   if (self._A.dtype != np.uint8 and 
    595     not np.can_cast(self._A.dtype, np.float)): 
--> 596    raise TypeError("Image data can not convert to float") 
    597 
    598   if (self._A.ndim not in (2, 3) or 

TypeError: Image data can not convert to float 

私はここに画像を添付することはできません、画像の細部があります。

画像(グレー)あなたはmatplotlibのプロットに画像フィルタを適用しようとしている

http://lttm.dei.unipd.it/downloads/gesture/

答えて

0

でデータセットの「MicrosoftのKinectとリープモーション」から「1_depth.png」です。それはうまくいかない。 plt.imshow()matplotlib.image.AxesImageを返します。これは複雑なクラスなので、floatに変換することはできません。

もちろん、画像自体にフィルタを適用する必要があります。

img = ... 
plt.imshow(img, clim=(0.064, 0.068)) 
mod_img = ndimage.median_filter(img, 20) 
plt.imshow(mod_img) 
+0

ああ!このソリューションをありがとう:)このような愚かな質問;) – Prachi

関連する問題