【问题标题】:How do i loop through a sliced ndarray我如何遍历切片的ndarray
【发布时间】:2020-03-02 10:15:29
【问题描述】:

`

     pix = cv2.imread(dirname2)
     pix=pix.reshape((1,144,256,3))

     pix[0:10,:,:,:]=pix[0:10,:,:,:]*0

     print(pix)

     framestack=[]

     for x in range(0,10):

         pix[x,:,:,:,:]=255
         pix[0:10,:,:,:]=pix[0:10,:,:,:]*0
                                   `

你好 我想以这样一种方式对图像进行切片,当我将该切片乘以 0 时,我使所有前 1000 个像素通道都为零。

现在它使图像的前 10 行全部为零。

然后在循环中,我想依次将每个像素通道的值设置为 255,一个接一个,但在进行时将先前的迭代或槽的值变回零。从我们使等于零的那 1000 个像素通道中。 我的问题是切片技术存在严重缺陷。

【问题讨论】:

  • 1000 如何适应形状 (144,256)?像这样的形状表明 1 张形状为 144 x 256 的图像,具有 3 个通道 (RGB)。也许您想将数组重塑为 (144*256, 3),因此它被视为 3 个元素像素的“平面”数组。然后按顺序对arr(i: i+1000, :) 等进行操作。
  • 一千张图片叠加在一起
  • 如果您没有清楚地解释问题,您将不会得到一个好的答案,并且可能根本没有答案。如果我们必须猜测,我们会跳过您的问题。
  • 有一千张图像堆叠在一起,我想有一种方法来识别这 1000 张中的每一张,方法是让每张图像的前一千个像素中的每一个都为零,除了一个插槽。所以每个图像在不同的插槽中都有一个 1

标签: python numpy slice


【解决方案1】:

迭代第n维:

for x in np.rollaxis(data, n+1):
    print(x)

【讨论】:

  • 它如何知道在 1000 像素后停止?我不清楚 n+1 部分。
  • 好的,我检查一下计数是否 = 1000,如果是,则退出循环......我也可以通过首先迭代它并乘以零元素......但它会做我想要的还是会改变整个子阵列,或者以零星的方式删除像素?
  • 我收到一个错误,当我使用 5 而不是 n+1 时,轴超出范围...请帮助
猜你喜欢
  • 2013-06-25
  • 1970-01-01
  • 2021-11-17
  • 2014-04-02
  • 2023-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-14
相关资源
最近更新 更多