首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在遍历列表时获取元素位置时出现问题(Python)

在遍历列表时获取元素位置时出现问题(Python)
EN

Stack Overflow用户
提问于 2018-06-16 07:50:15
回答 4查看 79关注 0票数 0

这是python的新手,所以这可能非常简单。

我正在使用PIL,并且我已经使用Image.getdata()生成了一个像素信息列表。我的目标是找到图像红色通道中的所有暗像素,并创建它们在整个像素列表中出现的位置的列表。这就是我所拥有的。

import PIL
from PIL import Image
import os

os.chdir('Correct Path')

im=Image.open('TRY.jpg')
im=im.getchannel(0)
pixels = list(im.getdata())

dark = []
dposition = []
for a in pixels:
    if a<100:
        dark.append(a)

print(dark)

因此,我的目标是用列表“像素”中所有暗像素的位置填充列表"dposition“,但我完全不知道如何做到这一点!到目前为止,列表"dark“用于显示红值<100的所有像素的值。如有任何帮助,我们将不胜感激,谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-06-16 12:06:58

你创建了一个一维数组,所以大多数其他答案都会给出你在该一维数组中的位置。如果你需要xy职位,下面是你可以做的:

import PIL
from PIL import Image
import os
import numpy as np

im=Image.open('cat.jpg')

im=im.getchannel(0)

转换为二维numpy数组。

im = np.asarray(im)
dposition = []
for i, row in enumerate(im):
    for j, pixel in enumerate(row):
        if pixel < 100:
            dposition.append((i, j))

print(dposition)
票数 0
EN

Stack Overflow用户

发布于 2018-06-16 07:54:47

将for循环更改为:

for a in range(0,len(pixels)):
    if pixels[a]<100:
        dark.append(pixels[a])
        dposition.append(a)

本质上,这允许我们访问像素红色通道数据和列表中该像素的索引,因此每次我们将某些内容添加到暗像素列表中时,我们都会将其索引添加到dposition列表中。

票数 0
EN

Stack Overflow用户

发布于 2018-06-16 07:55:33

您需要的是一种在遍历列表时确定索引位置的方法。在遍历列表时,您可以创建一个简单的计数器而不是增量:

dark = []
dposition = []
count = 0
for a in pixels:
    if a<100:
        dark.append(a)
        dposition.append(count)
    count += 1

或者,您可以使用Python内置的enumerate函数在遍历位置时生成位置:

dark = []
dposition = []
for position, a in enumerate(pixels):
    if a<100:
        dark.append(a)
        dposition.append(position)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50883894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档