-코딩 == 체력
-특정 언어에 치우치지 않는 코딩을 하는것이 먹고 살기에 유리하다
-자신의 기준을 코드 전체에 고르게 적용
-함수부 --> 변수 --> 메인 순으로 코드를 전개하면 보기에도 좋
python 기초 문법
-print()
-for
-while
-if
-2d-array
image = []
tmp_arr = []
ROW = COL = int(input("숫자 써"))
#image array에 ROWxCOL 0 matrix 만들기 --> 메모리할당, 값을 초기화
for i in range(ROW):
for k in range(COL):
tmp_arr.append(0)
image.append(tmp_arr)
tmp_arr = []
#파일에서 메모리로 로딩
for i in range(ROW):
for k in range(COL):
pixel = random.randint(0,255) #0~255으 랜덤한 값으로 로딩
image[i][k] = pixel
파이썬에서는 그냥 빈 리스트에 직접 추가해도 되지만 프로그래밍을 범용적으로 공부하려면 다른 언어와 비슷하게 구현하는것이 좋다. 따라서 메모리 할당, 값을 초기화 --> 파일 로드
-영상처리
1) 영상을 밝게하기
def brighter_50():
for i in range(ROW):
for k in range(COL):
if (image[i][k] + 50 > 255):
image[i][k] = 255
else:
image[i][k] += 50
변수: ROW(전), COL(전), imag(전), i(지), j(지)
설명: 이중 for문을 통해 2차 배열 영상의 픽셀에 접근한다. 전체 픽셀에 대해서 50을 더한 값을 적용시킨다. 단, if 문을 사용하여 픽셀+50의 값이 255보다 크다면 표현 범위를 넘어서 오버플로우 발생하므로 이 경우 255로 변경해준다. 그렇지 않으면 50을 더해준 값을 image[i][k]에 적용시킨다.
2)영상을 어둡게 하기
def darker_50():
for i in range(ROW):
for k in range(COL):
if (image[i][k]-50 < 0):
image[i][k] = 0
else:
image[i][k] -= 50
변수: ROW(전), COL(전), imag(전), i(지), j(지)
**주의: image는 전역변수이므로 이런 방식으로 사용한다면 결과값이 누적되어서 사용될것이다. 만약 이 경우도 밝게를 거치고 온다면 모든 픽셀에 50이 더해져 있는 상태에서 시작.
설명: 이중 for문으로 픽셀에 접근한다. 50 뺀 값이 0보다 작으면 안돼서 이 경우 0으로 대치시킨다. 아닌 경우 그냥 50 뺀다.
3) 이진영상
TH = 170 #0~255 중간쯤
def binary():
for i i range(ROW):
for j in range(COL):
if (image[i][k] >= TH):
image[i][k] = 255
else:
image[i][k] = 0
변수: ROW(전), COL(전), imag(전), TH(전), i(지), j(지)
설명: 임계값 TH를 설정하여 픽셀이 그 값 이상이면 255로 그렇지 않으면 0으로 바꾼다. TH값은 평균이나 중앙값 등과 같은 값을 사용하여 주어진 픽셀에 알맞는 임계치를 찾는 것이 좋다. 하지만 평균은 이상치에 민감하기 떄문에 중앙값을 추천
-파일 처리
file_name = 'FILE_PATH'
file_size = os.path.getsize(file_name)
height = width = int(math.sqrt(file_size))
image = [[0 for _ in range(width)]for _in range(height)]
rfp = open(file_name. 'rb')
for i in range(height):
for k in range(width):
image[i][k] = ord(rfp.read(1))
rfp.close()
변수:
-file_name: 불러올 파일의 경로
-file_size: getsize()로 얻어온 파일의 크기(heught와 width가 곱해진 형태)
-height, width: 파일의 높이 너비(==(file_size)**(1/2))
-image: 파일 내용 로드하기 메모리 할당, 초기화
-open(), close(): 파일을 열고 닫기, 파일 로딩이 끝나면 바드시 닫아준다
설명: file_name을 읽어와파일을 오픈한 후 값들을 초기화시킨 배열에 1byte씩 읽어온다. 다 하면 rfp.close()통하여 파일을 닫는다.
-GUI
1)윈도우
from tkinter import *
from tkinter import messagebox
window= Tk()
window.title('title')
window.geometry('400x500)
window.mainloop()
설명: tkinter을 사용하여 GUI구성. 400x500사이즈의 윈도우를 생성하고 그 윈도우의 타이틀은 'title'이다
2) 버튼
from tkinter import *
from tkinter import messagebox
window= Tk()
window.title('title')
window.geometry('400x500)
btn1 = Button(window, text = 'click here')
btn1.pack()
window.mainloop()
설명: Button함수를 사용하여 window내에 버튼을 생성한다. btn.pack()을 사용하여 윈도우에 표시
3) 글
from tkinter import *
from tkinter import messagebox
window= Tk()
window.title('title')
window.geometry('400x500)
label1 = Label(window, text = '글씨'
label1.pack()
window.mainloop()
설명: Label을 사용하여 window에 글씨를 표시한다. pack()을 사용하지 않으면 윈도우에 생성되지 않는다.
'2023 > 집체교육' 카테고리의 다른 글
0626 1주 1일_알고리즘 특강 OT (2) | 2023.06.28 |
---|