gpt4 book ai didi

python-3.x - 类型错误 : Image data can not convert to float on plt. imshow()

转载 作者:行者123 更新时间:2023-12-04 17:51:26 25 4
gpt4 key购买 nike

我正在尝试从附在这个问题中的深度图像中分割手。在这个过程中,我写了下面的代码,首先处理图像的直方图,然后对处理后的图像进行中值滤波。但是即使在努力解决之后,这段代码仍然不断出错。

    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

由于我无法附上图片,所以这里是图片的详细信息。

图像(灰色)是数据集“Microsoft Kinect and Leap Motion”中的“1_depth.png”

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

最佳答案

您正在尝试将图像过滤器应用于 matplotlib 图。那是行不通的。 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)

关于python-3.x - 类型错误 : Image data can not convert to float on plt. imshow(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44476790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com