繁体   English   中英

为什么此循环无法正常工作?

[英]Why isn't this loop working properly?

因此,基本上我正在尝试重新排列图像中的某些像素。 要重新排列的像素存储在称为xpixel和ypixels的两个列表中,其中的一对对应于在原始图像中要重新排列的像素坐标。 但是,我的功能只是重新排列y轴上的像素,并且仅用于第一列。 我不太确定为什么会这样,只能认为外部循环由于某种原因未正确处理,或者只是我的逻辑有误。 任何帮助,将不胜感激。

    for i in range(x1, x2): #range of x coordinates in original image

        for j in range(y1, y2): #range of y coordinates in original image
            if ycounter >= len(ypixels):
                break
            else:
        #pixmap is a pixelaccess object containing image data    
                pixmap[i, j]=pixmap[i, ypixels[ycounter]] #this shuffles the first y column
                ycounter=ycounter+1

我不完全确定这段代码在做什么,但是我想您需要在每次外部循环迭代开始时重置ycounter的值。

我仍在尝试找出问题所在,但尝试将其可视化:

pixmap = [[0 for x in range(5)] for x in range(5)]
for i in range(5):
    for j in range(5):
        pixmap[i][j] = '1'


for i in range(5):
    pixmap[j][i] = '0'

print "Original Matrix:"
for i in range(5):
    print pixmap[i]

def rearrange_funct(oldPos,newPos):
    original_posX, original_posY = oldPos
    rearrange_posX, rearrange_posY = newPos
    oldContent = pixmap[original_posX][original_posY]
    pixmap[original_posX][original_posY] = pixmap[rearrange_posX][rearrange_posY]
    pixmap[rearrange_posX][rearrange_posY] = oldContent



oldPixelPositions = [(0,0),(0,1),(0,2),(0,3),(0,4)]

newPixelPositions = [(4,0),(4,1),(4,2),(4,3),(4,4)]
for x in range(len(oldPixelPositions)):
    rearrange_funct(oldPixelPositions[x],newPixelPositions[x])

print "Rearranged Matrix:"
for i in range(5):
    print pixmap[i]

这就是您要达到的目标吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM