Python
ctyhon - cProfile 모듈 사용하기
ctyhon - cProfile 모듈 사용하기
2020.11.24cprofile 의 -s cumulative 옵션은 각 함수에서 소비한 누적 시간순으로 정렬되어 어떤 함수가 더 느린지 쉽게 확인할수 있다. cProfile의 출력 결과는 코드의 print문이 모두 출력 된 뒤에 화면에 출력된다. python -m cProfile -s cumulative test.py 를 입력하면 누적 소비 시간으로 정렬하면 실행 시간을 주로 소비하는곳이 어딘지 쉽게 확인할 수 있다.
적응형 이진화
적응형 이진화
2020.11.12전체 이미지에 하나의 임계값을 사용하는 threshold함수는 이미지 일부가 어두운 경에는 하나의 임계값을 사용하여 이진화 할때 좋은 결과를 얻기 힘듭니다. 적응형 이진화는 이미지를 작은 영역으로 나누어 각 영역별로 다른 임계값을 사용하는 방법입니다. 적응형 이진화를 위해 OpenCV 에서는 adaptive Threshold함수를 제공합니다. 그림에 적응형 이진화를 적용해보면 어두운 부분과 조명이 알맞은 부분에 모두 좋은 이진화 결과를 보여주는 것을 볼수 있습니다. #include #include using namespace cv; using namespace std; int main() { // 이미지를 읽어옵니다. Mat img_color; img_color = imread("test.jpg", IM..
opencv 전역 임계값 사용
opencv 전역 임계값 사용
2020.11.10'이진화 thresholding'는 그레이 스케일 이미지를 바이너리 이미지로 변환 하는방법입니다. 임계값 threshold를 기준으로 그레이 스케일 이미지를 흰색 영역과 검은색 영역으로 분리합니다. 예를 들어, 임계값이 127일 경우 입력으로 사용한 이미지에서 픽셀값이 127 이하이면 검은색(0)으로 하고, 픽셀값이 127보다 크면 흰색(255)로 하여 바이너리 이미지를 생성합니다. OpenCV 에서는 이미지 전체에 하나의 임계값을 사용하는 threshold함수와 이미지를 작은 영역으로 나누어 각 영역별로 다른 임계값을 사용하는 adaptiveTreshold 함수를 제공합니다. threshold함수는 이미지 전체에 하나의 임계값을 사용하여 이진화를 합니다. 왼쪽 그라데이션 이미지는 검은색(0)에서 흰색(..
opencv 이미지 채널 분리 및 합치기
opencv 이미지 채널 분리 및 합치기
2020.11.10컬러 이미지를 B, G, R 채널로 분리한 후, 순서를 R, G, B로 바꾸어 컬러 이미지를 생성해보겠습니다. Color창에 보이는 이미지를 보면 Red와 Blue의 위치가 바뀐것을 볼 수 있습니다. R, G, B 창에 보여지는 채널별 이미지는 해당 채널의 픽셀값이 255인 영역만 흰색으로 보입니다. import cv2 as cv import os dt_path = os.path.join(os.path.expanduser('~'),'Desktop') os.chdir(dt_path) img_color = cv.imread('test.jpg', cv.IMREAD_COLOR) # 컬러 이미지를 채널별로 분리합니다. img_b, img_g, img_r = cv.split(img_color) # 채널별 이미지를 ..
opencv 픽셀에 접근하기
opencv 픽셀에 접근하기
2020.11.10import cv2 as cv import os import numpy as np dt_path = os.path.join(os.path.expanduser('~'),'Desktop') os.chdir(dt_path) img_color = cv.imread("test.jpg", cv.IMREAD_COLOR) # 이미지의 높이와 너비를 가져옵니다. height, width = img_color.shape[:2] print(img_color.shape) # gray scale image 를 저장할 numpy array 를 생성합니다. img_gray = np.zeros((height, width), np.uint8) # for 문을 돌면서 (x, y)에 있는 픽셀을 하나씩 접근합니다. for y in ran..
python 으로 루트 제곱근 구하기
python 으로 루트 제곱근 구하기
2020.10.18import math def sqrt(value): return int(math.sqrt(value)) n = int(input()) print(sqrt(n)) math 라이브 러리를 이용해서 sqrt 을 사용하면 입력받은 값의 제곱근을 구할수 있습니다. return 값은 double 형태 이므로 int 형으로 형변환 했습니다 !
튜플 정렬하기 - operator itemgetter 메서드
튜플 정렬하기 - operator itemgetter 메서드
2020.10.101 2 3 4 5 6 7 8 9 from operator import itemgetter metro_areas = [ ('Tokyo', 'JP', 36.933, (35.689722, 139.691667)), # ('Delhi NCR', 'IN', 21.935, (28.613889, 77.208889)), ('Mexico City', 'MX', 20.142, (19.433333, -99.133333)), ('New York-Newark', 'US', 20.104, (40.808611, -74.020386)), ('Sao Paulo', 'BR', 19.649, (-23.547778, -46.635833)), ] Colored by Color Scripter cs 여러개의 튜플이 모인 리스트 가 있습니다. 각..
문자열 정렬하기 - ljust, center, rjust
문자열 정렬하기 - ljust, center, rjust
2020.09.30이번 강의에서는 문자열을 좌측/가운데/우측 정렬하는 법을 배워봅니다. 예시) 다른 언어에서는..(또는 이 기능을 모르시는 분은) 보통 사람들은 for 문을 이용해 기존 스트링에 공백문자 (' ') 를 여러 번 붙이는 번거로운 일을 하지요. 이렇게요! 파이썬에서는 파이썬에서는 ljust, center, rjust와 같은 string의 메소드를 사용해 코드를 획기적으로 줄일 수 있습니다.
python 진법 변환
python 진법 변환
2020.09.30n진법으로 표기된 string을 10진법 숫자로 변환하기 - int 함수 진법 변환 문제는 알고리즘 문제나 숙제로 자주 나오는 유형이지요. 이번 시간에는 n 진법으로 표기된 문자열을 10진법 숫자로 변환하는 방법을 배워봅시다. 예시) 5진법으로 적힌 문자열 '3212'를 10진법으로 바꾸기 다른 언어에서는..(또는 이 기능을 모르시는 분은) 보통 사람들은 for 문을 이용해 숫자를 곱해가며 문제를 풉니다. 파이썬에서는 파이썬의 int(x, base = 10) 함수는 진법 변환을 지원합니다. 이 기본적인 함수를 잘 쓰면 코드를 짧게 쓸 수 있고, 또 시간을 절약할 수 있습니다.
몫과 나머지 - divmod
몫과 나머지 - divmod
2020.09.30알고리즘 문제를 풀다 보면, 정수를 나눈 몫과 나머지를 구해야 할 때가 있습니다. 예시) 7을 3으로 나눈 몫과 나머지를 구해야 하는 경우 다른 언어에서는..(또는 이 기능을 모르시는 분은) 보통 사람들은 나머지와 몫을 따로 구합니다 파이썬에서는 파이썬의 divmod와 unpacking을 이용하면 다음과 같이 코드를 짤 수 있습니다. 무조건 divmod를 사용하는 게 좋은 방법은 아닙니다. 가독성이나, 팀의 코드 스타일에 따라서, a//b, a%b와 같이 쓸 때가 더 좋을 수도 있습니다. 또한, divmod는 작은 숫자를 다룰 때는 a//b, a%b 보다 느립니다. 대신, 큰 숫자를 다룰 때는 전자가 후자보다 더 빠르지요.
flask 6_로그인
flask 6_로그인
2020.09.17오늘은 회원 가입에 이어서 로그인 기능을 구현하려고 합니다 flask 는 django 와 달리 쿠키와 세션을 자동적으로 해주지 않아서 직접 구현 해야 합니다 로그인 페이지를 생성 해줍니다. 이메일 과 비밀번호를 POST 방식으로 넘겨주기 때문에 form 으로 묶어줍니다. 그다음 route를 만들어줍니다 form 에서 넘어온 email 과 password 를 받아서 members 테이블안에 email이 있는지 찾습니다. data 정보가 없으면 flash 로 정보가 없다고 알려주고 다시 login 페이지로 이동시킵니다 데이터가 있다면 유저가 입력한 비밀번호 와 데이터베이스 안에 비밀번호와 일치하는지 확인합니다. 그런다음 서버가 클라이언트를 확인하기 위해서 세션 처리를 합니다 from flask import ..
flask 5_ 회원가입
flask 5_ 회원가입
2020.09.16먼저 간단한 회원가입 을 만들어 줍니다 데이터를 넘겨줄꺼기 때문에 form 으로 묶어줍니다 method는 POST method 가 post 일 경우 form 에서 넘어온 data 를 받아줍니다 먼저 모든 값이 비어 있지 않은지 확인합니다 비어있으면 flask 의 flash를 사용해서 메세지를 띄워줍니다. 비밀번호가 일치 하는지 확인 하고 mongo.db.members 로 mongo db 안의 members 테이블에 접근합니다. form 에서 넘어온 email이 db 안에 존재하는지 확인하고 중복된 값이 있으면 중복된 이메일 주소입니다 를 출력합니다. 마지막으로 post 변수에 dict 형태로 data를 담아서 members 에 넣어줍니다.