Python: 在函数内部复制RGB图像
Python: copying RGB images inside the function
我是 Python 的新手。我使用 skimage.transform
工具编写了 (Python 3.6.1) 一个简单的图像旋转函数:
def rotate_20rand(X):
X_aug = np.zeros_like(X)
for i,img in enumerate(X):
X_aug[i] = transform.rotate(img, angle=np.random.uniform(-20, 20))
return X_aug
我将我的 np.ndarray
数据集 (34799, 32, 32, 3)
图像传递给它。如果图像是灰度图像,则函数的输出是正确的。但是,通过 RGB 图像后 X_aug
包含全零。
我试过以下方法:
- 首先我检查了
transform.rotate(...)
函数在我将 RGB 图像传递给它后是否工作。
- 然后我认为问题出在:
X_aug[i] = transform.rotate(img, angle=np.random.uniform(-20, 20))
并尝试了不同的copy
方法。
None 这些有帮助,我不知道我做错了什么。
你的代码对我有用。它在 X_aug
中为任何类型的输入数组生成非零值。
试试这个:
def rotate_20rand(X):
return np.stack((transform.rotate(img, angle=np.random.uniform(-20, 20)) for img in X))
我是 Python 的新手。我使用 skimage.transform
工具编写了 (Python 3.6.1) 一个简单的图像旋转函数:
def rotate_20rand(X):
X_aug = np.zeros_like(X)
for i,img in enumerate(X):
X_aug[i] = transform.rotate(img, angle=np.random.uniform(-20, 20))
return X_aug
我将我的 np.ndarray
数据集 (34799, 32, 32, 3)
图像传递给它。如果图像是灰度图像,则函数的输出是正确的。但是,通过 RGB 图像后 X_aug
包含全零。
我试过以下方法:
- 首先我检查了
transform.rotate(...)
函数在我将 RGB 图像传递给它后是否工作。 - 然后我认为问题出在:
X_aug[i] = transform.rotate(img, angle=np.random.uniform(-20, 20))
并尝试了不同的copy
方法。
None 这些有帮助,我不知道我做错了什么。
你的代码对我有用。它在 X_aug
中为任何类型的输入数组生成非零值。
试试这个:
def rotate_20rand(X):
return np.stack((transform.rotate(img, angle=np.random.uniform(-20, 20)) for img in X))