이미지를 픽셀 화하기 위해 Python에서 함수를 작성하고 있지만 어떤 이유로 xx와 x가 증가하지 않습니다. 두 변수 모두 값 0을 유지하며 아무 일도 일어나지 않습니다.Python 중첩 된 while 루프가 예상대로 증가하지 않습니다.
xx = 0
yy = 0
while xx < width:
while yy < height:
print ("---", xx, yy)
offsetX = xx + block_size_half
offsetY = yy + block_size_half
while (xx + offsetX >= width):
offsetX -= 1
while (yy + offsetY >= height):
offsetY -= 1
r, g, b = matrix[xx + offsetX][yy + offsetY]
x = xx
y = yy
while x < xx + block_size and x < width:
while y < yy + block_size and y < height:
print (x, y)
matrix[x][y] = (r, g, b)
y += 1
x += 1
yy += block_size
xx += block_size
도움을 주신 @Elazar에게 감사드립니다.
def pixelate(matrix, block_size):
width = len(matrix)
height = len(matrix[0])
block_size_half = int(block_size/2)
for xx in range(0, width, block_size):
for yy in range(0, height, block_size):
offsetX = min(xx + block_size_half, width - 1)
offsetY = min(yy + block_size_half, height - 1)
r, g, b = matrix[offsetX][offsetY]
for x in range(xx, min(xx + block_size, width)):
for y in range(yy, min(yy + block_size, height)):
matrix[x][y] = (r, g, b)
나는이 C#을 구현의 알고리즘에 대한 영감을 얻었다 : 당신이 xrange()
(또는 range()
)를 사용하지 않을 이유가 이유를 볼 수 없습니다 http://notes.ericwillis.com/2009/11/pixelate-an-image-with-csharp/
들여 쓰기 문제가 있는지 잘 모르겠습니다. –
아마도 'block_size == 0'입니까? – Elazar
GrijeshChauhan : 들여 쓰기에 문제가 있는지 확인하려고했지만 아무것도 찾을 수 없었습니다. Elazar : yy 및 y가 올바르게 증가하므로 문제가되지 않아야합니다. 아래 답변 주셔서 감사합니다! – user2252177