Python:在函数内部复制RGB图像
问题描述:
我是Python新手。我写的(Python的3.6.1)使用skimage.transform
工具图像旋转一个简单的函数:Python:在函数内部复制RGB图像
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
方法。
这些都没有帮助,我不知道我做错了什么。
答
您的代码适合我。它在X_aug
中为任何类型的输入数组生成非零值。
试试这个:
def rotate_20rand(X):
return np.stack((transform.rotate(img, angle=np.random.uniform(-20, 20)) for img in X))
谢谢@RomanMindlin,此代码对我的作品。但是我仍然不明白原始函数有什么问题。你也使用Python 3吗? 我尝试用'X_aug = copy.deepcopy(X)'替换'X_aug'初始化代码,但是在循环内部的赋值操作之后''X_aug'的所有条目都变为零。 –
我已经用Python 3.5.2测试了你的代码,numpy == 1.13.1,scikit-image == 0.13.1。可能你在代码的另一部分有问题,很可能是使用变量名称空间。请不要忘记接受答案) –