2012-04-26 6 views
2

나는 현재 .ppm 파일을 메인에로드하고 그 다음에 파일을 허용하는 일련의 함수를 실행할 수있는 학교용 프로그램을 작성하고 있습니다. 사용자는 다양한 방법으로 표시된 이미지 파일을 조작 할 수 있습니다 (다른 기능을 통해 수행됨). 이 파일을 조작 할 수있는 방법 중 하나는 가로 축을 가로 질러 플립 (flip)하는 것입니다. 따라서 각 행의 요소를 "반대"위치로 이동시키는 함수가 필요합니다. 예를 들어 배열이 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14] 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2,파이썬에서 2 차원 배열 요소를 "반대쪽"으로 이동시키는 기능

참고 : 3 개 요소는 모두 단일 픽셀의 RGB 값을 나타내므로 중간 3 요소가 어떻게 동작해야하는지 확신 할 수 없으므로 이미지를 넣어야합니다.

def Switch(image_arry, cols, rows): 


for y in range(rows): 

    for x in range(0, cols): 

     r1 = image_arry[y][x*3] 
     g1 = image_arry[y][x*3+1] 
     b1 = image_arry[y][x*3+2] 

     r2 = image_arry[y][x*3 -3] 
     g2 = image_arry[y][x*3 - 2] 
     b2 = image_arry[y][x*3 - 1] 

     image_arry[y][x*3] = image_arry[y][x*3 -3] 
     image_arry[y][x*3+1] = image_arry[y][x*3 - 2] 
     image_arry[y][x*3+2] = image_arry[y][x*3 - 1] 

참고 : 대학 코스 인이로 인해, 나는 우리가 아직이 과정에 포함되지 않은 내 프로그램에 무엇을 사용하는 것이 허용되지 않은 오전 (그것의 여기

지금까지 내 기능입니다 4 개월, 100 레벨 코스로 범위가 매우 넓지는 않음). 그리고 break 나 while (1) 문도 사용할 수 없습니다. 당신의 도움을 주셔서 대단히 감사합니다!

+0

[r1] 행에 [ – keyser

답변

2

첫째, 배열의 각 항목을 하나의 항목으로 지정해야합니다. 즉, RGB 값을이 경우와 같이 하나가 아닌 3 개의 객체로 유지해야합니다.

클래스를 사용할 수 없으므로 각 픽셀을 튜플 또는 목록으로 만드는 것이 좋습니다. 당신은 지금과 같이 해당 행을 취소 할 수 있습니다

row = [(0,0,0,), (128, 128, 128), (0, 255, 0)] 

: 따라서 하나의 검은 픽셀, 하나 개의 회색과 하나 개의 녹색과 세 개의 픽셀 행은 다음과 같을 것이다

row.reverse() 

을 그리고 행은 지금 될 것입니다 :

row = [(0,0,0,), (128, 128, 128), (0, 255, 0)] 

플립하는 코드는 간단한 것이다 :

for row in image: 
    row.reverse()