在图像/矩阵中创建随机白色矩形/数组

时间:2016-02-27 11:41:34

标签: python arrays image matrix

我有一个图像,在Python(512x512)中保存为矩阵。 现在我想添加一些具有恒定大小的随机矩形来模拟一些缺失的区域。 通常我会在图像大小内创建一个随机索引,并使用嵌套循环创建一个值为255的5x5大小的数组(在Python中为白色)。 我需要另一个循环来创建特定数量的矩形。 总结一下,我需要3个循环:

for (0,amountOfRec):
    startPoint = (randomIndex1,randomIndex2)
         for (0,sizeOfRec)        #jump to next row
              for (0,sizeOfRec)   #create a row with value 255

这种方式似乎很幼稚。没有使用3个嵌套循环,是不是有更好的方法?

1 个答案:

答案 0 :(得分:1)

对于处理大型矩阵,您应该使用Numpy,这使您可以使用矢量化操作,以及许多其他好处。

假设您的图像是灰度级的(或只有一个RGB通道),并以简单的嵌套数组格式表示,您可以尝试这样的事情:

import numpy as np

#Generate random "image" (replace this with your original image)
img = np.random.randint(0,256, size=512**2).reshape(512,512)

#Make white box
box = np.array([255]*5*5).reshape(5,5)

#Generate random coordinates
x, y = np.random.randint(0,512-5, size=2)

#Replace original image with white box
img[x:x+5, y:y+5] = box