我使用 convolution2d 生成了一些关于局部模式条件的统计数据。完整地说,我正在处理图像,值 0.5 是我的“灰屏”,不幸的是我不能在此之前使用蒙版(依赖于其他一些包)。我想在我的图像中添加新对象,但它应该与非灰屏至少重叠 75%。假设新对象是正方形,我将灰屏上的图像与其余图像进行屏蔽,用一个 n x n 矩阵填充 1 进行二维卷积,这样我就可以得到其中灰度像素数的总和修补。这一切都有效,所以我有一个矩阵,其中有合适的地方来放置我的新对象。我如何有效地从此矩阵中随机选择一个?
这是一个带有 5x5 图像和 2x2 卷积矩阵的小示例,我希望我的最后一个矩阵中的随机坐标为 1(因为该补丁中最多有 1 0.5)
图片:
1 0.5 0.5 0 1
0.5 0.5 0 1 1
0.5 0.5 1 1 0.5
0.5 1 0 0 1
1 1 0 0 1
卷积矩阵:
1 1
1 1
复杂的图像:
3 3 1 0
4 2 0 1
3 1 0 1
1 0 0 0
以 <= 1 为条件:
0 0 1 1
0 0 1 1
0 1 1 1
1 1 1 1
如何高效地获取 1 的均匀分布坐标?
最佳答案
np.where
和 np.random.randint
应该可以解决这个问题:
#we grab the indexes of the ones
x,y = np.where(convoluted_image <=1)
#we chose one index randomly
i = np.random.randint(len(x))
random_pos = [x[i],y[i]]
关于python - 根据条件在 Numpy 数组中选择随机坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39430572/