반응형
출처) http://www.pythonchallenge.com/index.php
www.pythonchallenge.com/pc/return/mozart.html
- 파이썬 챌린지 레벨16 문제!
- 이번문제는 픽셀관련된 문제인 것 같다.
- 이미지를 자세히 보면 핑크색 픽셀이 연달아 나온다.
- 한줄씩 출력했을 때 연달아 나온 숫자를 찾아볼면 될 것 같다.
- 높이가 1인 지점에서 한줄만 뽑아보았는데 rgb 형태는 아닌 것 같지만 같은 숫자로 나오는 걸 볼 수 있다.
- 195가 반복되고 있으니 핑크색이 나오는지 이미지 사이즈에 맞게 출력해보았다.
- 이미지 모듈인 Image.frombytes( mode , size , data)는 픽셀 데이터에서 이미지 메모리를 복사하여 값에 맞는 이미지를 나타내어 준다.
- 195가 핑크색이 맞았다. 문제에서 주어진 그림 픽셀 중 195만 뽑아서 모으면 글자가 있을 줄 알았지만 그렇게 푸는 건 아니였다.
- 풀이를 참고하니 핑크색을 왼쪽으로 행이동으로 시켜 길게 내리면 된다고 한다...
from PIL import Image, ImageChops
image = Image.open("D:/Python Challenge/mozart.gif")
for y in range(image.size[1]):
box = 0, y, image.size[0], y + 1
## crop(box) box is a 4-tuple defining the left, upper, right, and lower pixel coordinate.
row = image.crop(box) ##현재 이미지에서 박스 영역의 복사본 반환
row_byte = row.tobytes() ### tobytes()- numpy배열에서 byte형태로 변환해주는 함수
offset=row_byte.index(195)
row=ImageChops.offset(row,-offset) ##ImageChops.offset- 지정된 거리에 의해 데이터가 오프셋된 이미지의 복사본을 반환
image.paste(row, box)
image.show()
ImageChops.offset (image, xoffset, yoffset)
xoffset : 수평 거리
yoffset : 생략하면 수직 거리이며 두 거리가 동일하게 설정
- offset을 음수로 두어야 핑크색 픽셀이 왼쪽으로 이동하게 된다.
- 코드를 실행해보면 다음과 같은 이미지가 나온다.
-
답 : romance
- www.pythonchallenge.com/pc/return/romance.html 로 가면 다음레벨 문제가 나온다.
반응형
'#WarGame > Python Challenge' 카테고리의 다른 글
Python Challenge # LV.15 (calendar) (0) | 2020.09.14 |
---|---|
Python Challenge # LV.14 (spiral) (0) | 2020.09.11 |
Python Challenge # LV.13 (xmlrpc) (0) | 2020.09.08 |
Python Challenge # LV.12 (5개의 파일) (0) | 2020.09.07 |
Python Challenge # LV.11 (even) (0) | 2020.09.05 |