gpt4 book ai didi

python - 创建图像补丁,sklearn.feature_extraction.image.extract_patches_2d 内存错误

转载 作者:行者123 更新时间:2023-12-05 00:15:17 26 4
gpt4 key购买 nike

我正在寻找一种方法将 numpy 图像划分为像补丁一样的网格。

这个任务已经回答了几次。
Extracting patches of a certain size from the image in python efficiently

skleans extract_patches_2d 看起来完全正确。

http://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.image.extract_patches_2d.html

但是,我觉得我不理解文档。

我有一个图像,它不是特别大,磁盘上只有几 Mb。 OpenCV 没有问题。

它的尺寸是

self.original_image.shape
(1536, 2048, 3)

因此,让我们将其提取为每个 100 X 100 的块。在信封计算的背面,补丁的数量应该类似于

(1536 * 2048)/(100 * 100) = 314
patches=extract_patches_2d(self.original_image,(100,100))
Traceback (most recent call last):
Debug Probe, prompt 46, line 1
File "c:\Python27\Lib\site-packages\sklearn\feature_extraction\image.py", line 374, in extract_patches_2d
extraction_step=1)
File "c:\Python27\Lib\site-packages\sklearn\feature_extraction\image.py", line 296, in extract_patches
patches = as_strided(arr, shape=shape, strides=strides)
File "c:\Python27\Lib\site-packages\numpy\lib\stride_tricks.py", line 48, in as_strided
array = np.asarray(DummyArray(interface, base=x))
File "c:\Python27\Lib\site-packages\numpy\core\numeric.py", line 482, in asarray
return array(a, dtype, copy=False, order=order)
ValueError: array is too big; `arr.size * arr.dtype.itemsize` is larger than the maximum possible size.

这是一个 numpy 内存错误。这是什么原因造成的?

我觉得我没有完全遵循,让我们制作一个小图像并将其分成相当大的部分
patches=extract_patches_2d(self.original_image[0:100,0:100],(50,50))

这有效,但会产生数千个补丁
len(patches)
2601

不是我期望的 ~ 4。我对这个功能有什么不了解?人们如何获得补丁,这在计算机视觉中似乎很常见。

Windows 上的 Python 2.7,最近安装的包和最新的
Ben@Laptop MINGW64 ~/Desktop
$ pip install -U scikit-learn

Requirement already up-to-date: scikit-learn in c:\python27\lib\site-packages

最佳答案

该函数从给定图像创建所有可能的补丁组合。
在您的情况下,第一个补丁将跨越 0:49 像素行和 0: 49 像素列。第二个补丁从 1:50 行、列和 o 开始。
因此,如果您有一个大小为 (m,n) 的图像并希望提取大小为 (a,b) 的块,则可以提取 (m-a)+1 x (n-b+1) 最大可能的块。
在你的情况下是 51x 51 = 2601 个补丁..
如果要限制要提取的补丁数量,可以通过 max_ patches 的可选参数来实现。范围。

关于python - 创建图像补丁,sklearn.feature_extraction.image.extract_patches_2d 内存错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44896606/

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