(출처) edwith 파이썬으로 배우는 프로그래밍 기초, 김문주 교수
색
: 빨간색, 초록색, 파란색, 3개의 값을 가진 튜플로 표현
☞ 3개의 값들은 해당 색의 빨간색, 초록색, 파란색 세기/ 강도를 의미
red = (255, 0, 0)
blue = (0, 0, 255)
white = (255, 255, 255) #3색 모두 가장 밝은 세기
black = (0, 0, 0) #빛이 하나도 없는 상태
yellow = (255, 255, 0)
purple = (128, 0, 128)
from cs1media import * #화면에 그래픽을 표현하기 위한 함수
img = create_picture(100, 100, purple) # (넓이, 높이, 색)
img.show() #화면에 출력
img.set_pixels(yellow) #픽셀의 색 지정
img.show()
파이썬에서 디지털 사진을 나타내는 방법
- 좌측 상단 기준, x 좌표는 좌 → 우로 증가, y 좌표는 위 → 아래로 증가
- img.get(250, 188) : 해당 좌표의(R, G, B) 색을 받아옴
- img.set(250, 188, (255, 0, 0)) : set 명령으로 업데이트
- 디지털 사진은 수많은 점들로 구성되며 이를 자동으로 읽고 쓰기 위해 반복문 사용
for i in range(4):
print(i) #0부터 3까지 i에 대입하면서 총 4번 반복
for i in range(7):
print("*" * i) #총 7번 반복, i값은 0~6
#i=0이면 * 출력되지 않음
반복문
◐ for 반복문
: 주어진 명령어를 반복
- 반복되는 명령에 변수 i를 통해 다른 값을 사용
- 0부터 시작해서 range의 인자로 주어진 값보다 하나 작은 값까지 i값이 변함
- 변수에 정수 값 대입
for i in range(7):
print("*" * i) #i = 0~6까지 총 7번 불림
픽셀의 색 변화에 적용
from cs1media import *
img = load_picture("../photos/geowi.jpg")
w, h = img.size() #튜플 리턴 (가로폭, 세로폭)
for y in range(h): #y는 0~h-1까지 변화
for x in range(w): #x는 0~w-1까지 변화
r, g, b = img.get(x, y) #모든 픽셀값에 대한 색 추출
r, g, b = 255 - r, 255 - g, 255 - b #최고세기 - 현재세기 (약하면 강하게, 강하면 약하게 반전)
img.set(x, y, (r, g, b)) #새로운 값으로 업데이트
img.show() #negative 음영사진처럼 보임
- h = 3, y = 0, 1, 2
- w= 3, x = 0, 1, 2
- x= 0, y =0 픽셀을 79, 126, 66 → 255-r, 255-g, 255-b로 색 반전
- x = 1, y= 0 픽셀을 동일 매커니즘으로 색 반전
- 반복
- for x 반복문 종료
- x = 0, y =1 픽셀부터 동일 매커니즘으로 수행
이미지 흑백 변환
from cs1media import *
threshold = 100
white = (255, 255, 255)
black = (0, 0, 0)
img =load_picture("../photos/yuna1.jpg")
w, h = img.size()
for y in range(h):
for x in range(w):
r, g, b = img.get(x, y)
v = (r + g + b) // 3 #r, g, b의 평균값 계산
if v > threshold: #기준(threshold)보다 픽셀의 빛의 세기가 강할 때
img.set(x, y, white) #하얀색으로 출력
else:
img.set(x, y, black) #기준보다 픽셀의 세기가 약할 때 검정색 출력
img.show() #흑백 사진 출력
☞ 명령을 white or black 두 가지 경우로만 지정해주었으므로 완벽한 흑백 사진이 아닌 거친 흑백사진으로 출력됨
정리하기
- 여러 가지 픽셀들로 구성된 디지털 사진 이해하기
- 튜플로 구성된 red, green, blue, 3가지 픽셀들의 색 이해하기
- 디지털 사진의 색 반전과 회색 계열 제외 흑백 사진으로 바꾸는 작업 이해하기
I'm a Senior Student in Data Science !
데이터 사이언스를 공부하고 있는 4학년 학부생의 TIL 블로그입니다. 게시글이 도움 되셨다면 구독과 좋아요 :)
'Programming > #Python' 카테고리의 다른 글
[Python] 지역 변수와 전역 변수 (1) | 2019.11.08 |
---|---|
[Python] 함수 인자와 매개 변수 (0) | 2019.11.08 |
[Python] 함수를 사용한 로봇 조종 및 디지털 사진 변환 프로그램 (0) | 2019.11.06 |
[Python] 매개 변수와 반환값을 가진 함수 (0) | 2019.10.14 |
[Python] 파이썬으로 배우는 프로그래밍 (0) | 2019.10.02 |