gpt4 book ai didi

python - 随机化图像中黑色像素的位置

转载 作者:太空宇宙 更新时间:2023-11-04 00:18:21 26 4
gpt4 key购买 nike

假设我以这种方式生成图像:

import cv2
import numpy as np
im = cv2.imread('target.jpg')
zzo = np.zeros(im.shape)
shp = (int(im.shape[0]),int(0.5*im.shape[1]),int(im.shape[2]))
zz = np.zeros(shp)
oo = 255*np.ones(shp)
cct = np.concatenate((zz,oo),1)
cv2.imshow('image',cct)
cv2.waitKey(0)
cv2.destroyAllWindows()

结果是一张半白半黑的图像。我怎样才能随机化黑白像素的位置?我试过使用 numpy permutationshuffle 函数,但这似乎对图像没有任何作用。变量 im 是一个 3D 数组,随机化像素的位置需要移动一个每个像素具有三个值 (R,G,B) 的对象,因此像素一是 im[0, 0,:],像素二是im[0,1,:]等等

最佳答案

您可能认为您可以使用 numpy.random.shuffle,但它只会打乱第一个维度。对于您的图像,这会打乱行,而不是所有像素。

如果您将数组从形状 (m, n, 3) reshape 为 (m*n, 3),您可以使用 numpy.random.shuffle。您可以创建具有此形状的数组的“ View ”并将其传递给 numpy.random.shuffle。这也将洗牌你的数组,因为 numpy.random.shuffle 就地操作。所以在你写完 cct = np.concatenate((zz,oo),1) 之后,你可以做

np.random.shuffle(cct.reshape(-1, 3))

这通常不起作用,因为 reshape 方法可以返回一个副本,在这种情况下,上面的行将在原地打乱副本但是它不会改变原始数组。在您的例子中,您刚刚使用 np.concatenate 构造了 cct,因此数组是 C 连续的,并且 cct.reshape(-1, 3) 返回一个 View 。

关于python - 随机化图像中黑色像素的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50092084/

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