python - Python,使用np.dstack时出错,无法解决
问题描述
运行以下代码时
mport matplotlib.pyplot as plt
import numpy as np
import skimage, skimage.io
from skimage.color import rgb2hsv
from skimage import io
ic = skimage.io.imread_collection('/Users/ /remoteSensing/Image/Landsat/*.tif')
img = np.dstack((ic[5],ic[4],ic[3]))
我收到以下错误。TypeError:意外的关键字参数:img_num
我在一个老问题中读到,旧版本的 NumPy 和 scikit-image 中存在一个错误,但我的版本是 numpy 1.19.1
scikit-image 0.17.2
tifffile 0.15.1
对于解决此错误的任何帮助,我将不胜感激。
这是文件夹 /Landsat https://1drv.ms/u/s!AizvpupSaqfjhzcdFz173WMZfo_J?e=N1UaeL的链接
这是回溯:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-4-ee45cc9a6663> in <module>
----> 1 img = np.dstack((ic[5],ic[4],ic[3]))
2
/Applications/anaconda3/lib/python3.7/site-packages/skimage/io/collection.py in __getitem__(self, n)
274 kwargs['img_num'] = img_num
275 try:
--> 276 self.data[idx] = self.load_func(fname, **kwargs)
277 # Account for functions that do not accept an img_num kwarg
278 except TypeError as e:
/Applications/anaconda3/lib/python3.7/site-packages/skimage/io/_plugins/imageio_plugin.py in imread(*args, **kwargs)
8 @wraps(imageio_imread)
9 def imread(*args, **kwargs):
---> 10 return np.asarray(imageio_imread(*args, **kwargs))
/Applications/anaconda3/lib/python3.7/site-packages/imageio/core/functions.py in imread(uri, format, **kwargs)
263
264 # Get reader and read first
--> 265 reader = read(uri, format, "i", **kwargs)
266 with reader:
267 return reader.get_data(0)
/Applications/anaconda3/lib/python3.7/site-packages/imageio/core/functions.py in get_reader(uri, format, mode, **kwargs)
184
185 # Return its reader object
--> 186 return format.get_reader(request)
187
188
/Applications/anaconda3/lib/python3.7/site-packages/imageio/core/format.py in get_reader(self, request)
168 "Format %s cannot read in %s mode" % (self.name, modename)
169 )
--> 170 return self.Reader(self, request)
171
172 def get_writer(self, request):
/Applications/anaconda3/lib/python3.7/site-packages/imageio/core/format.py in __init__(self, format, request)
219 self._request = request
220 # Open the reader/writer
--> 221 self._open(**self.request.kwargs.copy())
222
223 @property
/Applications/anaconda3/lib/python3.7/site-packages/imageio/plugins/tifffile.py in _open(self, **kwargs)
224 self._f = None
225 f = self.request.get_file()
--> 226 self._tf = _tifffile.TiffFile(f, **kwargs)
227
228 # metadata is the same for all images
/Applications/anaconda3/lib/python3.7/site-packages/tifffile/tifffile.py in __init__(self, arg, name, offset, size, multifile, _useframes, _master, **kwargs)
2461 setattr(self, key, bool(value))
2462 else:
-> 2463 raise TypeError(f'unexpected keyword argument: {key}')
2464
2465 fh = FileHandle(arg, mode='rb', name=name, offset=offset, size=size)
TypeError: unexpected keyword argument: img_num
解决方案
您可以尝试更新您的 scikit-image 版本并安装 tifffile 吗?scikit-image 0.17 改变了 tiff 文件的读取方式,这可能会解决问题。
此外,正如 hpaulj 所指出的,您需要将列表/元组传递给np.dstack
:
np.dstack((ic[5], ic[4], ic[3]))
(注意额外的一组括号。)
更新
我们终于在 skimage 问题跟踪器上发现了这一点。修复方法是在调用时指定 tifffile 插件imread_collection
:
import matplotlib.pyplot as plt
import numpy as np
import skimage, skimage.io
from skimage.color import rgb2hsv
from skimage import io
ic = skimage.io.imread_collection(
'/Users/ /remoteSensing/Image/Landsat/*.tif', plugin='tifffile'
)
img = np.dstack((ic[5],ic[4],ic[3]))
推荐阅读
- reactjs - 做什么
`React.Component 中的意思 ` - php - TCPDF:图像未正确显示在 PDF 中
- r - 如何将 csv 文件导入使用 R 内核的 Google Colab?
- c++ - C/C++ 将 8 字节数组转换为 64 位整数
- node.js - Mongoose 聚合得到 2 个变量
- python - 将修改后的破折号数据表保存到数据框
- c# - 来自 CSV 文件的 C# XML LINQ GroupBy
- python - librosa.effect.Split 的返回值很奇怪
- julia - 从 Travis 向我的 README 报告 julia 包的测试摘要
- azure - 如何测试 Azure 管道