我可以调用数组的索引吗?

2024-09-29 23:23:49 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有一个导入到python的图像。imread命令基本上给出一个数组X,Y,Z,其中X和Y是像素的坐标,Z(有四个维度)给出给定点(X,Y)的RGB值。你知道吗

import matplotlib.image as img
import numpy as np



RawImg = img.imread('tek0000.bmp','RGB')
CrpImg = RawImg[14:208,12:256,:]

x_values = []
y_values = []

for row in CrpImg:
    for cell in row:
        print(np.nonzero)
        if (cell == [136,136,0,255]).all:

我的目标是分析阵列中RGB配置为[1361360255]的精确点。这些点呈黄绿色。我想将X和Y值添加到列表或数组中,这样就可以绘制它们。你知道吗

为了实现这一点,我迭代数组的每个点X和Y(行和列),并分析Z值。我需要的是for循环中单元格的坐标(X,Y)。你知道吗

基本上,如果图像的点(X,Y)的颜色是黄色,则将该点(X,Y)添加到列表中。你知道吗

令人惊讶的是,我在网上几乎找不到任何东西,因为我认为,这是一件相对简单的事情。我意识到我可以使用以下方法进行交互: 因为我在len(X轴)的范围内,像这样,但是我想知道这样是否可能。你知道吗


Tags: in图像importimgforasnpcell
3条回答

如果使用标准库中的enumerate,则可以访问包含计数和值的元组。默认情况下,计数从0开始

for row in CrpImg

变成

for num, row in enumerate(CrpImg):
    print(num)

尝试使用numpy.where

indices = numpy.where(my_array == [136,136,0,255])

不完全确定这就是您要查找的内容,但我认为您希望从循环内部获取索引。主要的方法是

  1. 循环使用索引,例如for i in range(0,255):,然后索引到数组中
  2. 使用enumerate迭代,它返回一个索引以及集合中的值
  3. 使用index方法

我认为最简单的选择是index方法。你知道吗

for row in CrpImg:
    for cell in row:
        print(np.nonzero)
        if (cell == [136,136,0,255]).all:
            print(CrpImg.index(row), row.index(cell))

请注意,这将为您提供作物内部的索引,而不是完整的图像。您可以调整(通过添加14和12),也可以迭代整个图像。你知道吗

相关问题 更多 >

    热门问题