Loading...
2023. 11. 7. 11:44

opencv와 PIL이 이미지를 저장하는 방식의 차이

opencv는 컬러 이미지를 BGR로 저장하는데, PIL은 RGB로 저장한다 그래서 동일한 이미지를 opencv로 read할때와 PIL로 open할때 plt.imshow()하면 보이는게 다르다 from imageio import imread from PIL import Image import cv2 import matplotlib.pyplot as plt #opencv를 이용하여 이미지 load 후 시각화 img = cv2.imread(kitten_path) plt.imshow(img) plt.show() opencv로 열면 파란색이 먼저 보임 # PIL을 이용하여 이미지 load후 시각화 img_ = Image.open(kitten_path) plt.imshow(img_) plt.show() #imag..

2023. 8. 13. 00:48

시간을 줄이는 테크닉 - 파이썬에서 함수형 코드를 적극적으로 활용해야하는 이유(+ if __name__ == "__main__"의 활용?)

알고리즘 문제를 풀다보면, 함수형 코드로 작성하는데 시간안에 통과하지만, 그렇지 않았을때 시간 초과나는 경우가 있다 기분탓인줄 알았는데 17467번: N! mod P (2) (acmicpc.net) 17467번: N! mod P (2) 양의 정수 N과, N보다 큰 소수 P가 주어질 때, N!을 P로 나눈 나머지를 구하여라. www.acmicpc.net 이렇게 쓰면 통과를 못하는데 n,p = map(int,input().split()) if n == p-1: answer = p-1 elif n > p - n: answer = 1 for i in range(n+1,p-1): result *= i result %= p answer = pow(answer,p-2,p) else: answer = 1 for i i..

2022. 8. 1. 02:22

집합 set의 메소드

1. set 중복되는 요소가 없이, 순서에 상관없는 데이터들의 묶음 중복을 허용하지 않으므로 중복되는 원소가 있다면 하나만 저장함 순서가 없으므로 인덱스를 이용한 접근이 불가능하다 수학에서 집합을 표현한 자료형 >> 집합연산이 가능한데, 여집합을 나타내는 연산자는 별도로 존재하지 않아 >> 중복된 값이 존재하지 않아 담고 있는 요소를 삽입, 변경, 삭제가 가능함 >> 가변 자료형(mutable) 2. set의 메소드 리스트에서 append()를 쓰는것과는 다르게 set은 add로 추가한다는 점에서 add가 제일 중요하고.. 나머지도 알아보자고 set은 순서가 없는 자료형이기 때문에 s.pop()을 하면 랜덤하게 항목을 제거해서 반환한다고함 비슷하게 add()도 랜덤한 위치에 넣는다고 하는데 3. s.ad..

2022. 8. 1. 01:35

딕셔너리의 메소드

1. 딕셔너리(dictionary) key,value 쌍으로 이루어진 자료형 key는 변경불가능한 데이터인 string, integer, float, boolean, tuple, range 등 만 가능 key로 리스트는 불가능하고 튜플은 가능 그러니까 key는 직접적으로 이름 변경이 불가능하고 삭제하고 새로 만들든지 간접적으로 변경 가능 key의 value는 어떠한 형태든 가능하다 3.7부터는 key의 입력 순서를 보존해줌 이를 이용하면 key를 정렬할 수도 있음 근데 주피터노트북에서 print말고 그냥 출력하면 순서가 항상 정렬된것처럼 보이네 2. 딕셔너리의 여러가지 메소드 자주 사용하는 것은 역시 d.keys(), d.values(), d.items() 가끔 사용하는 것은 d.get(k,v) 여기서 ..

2022. 7. 31. 12:50

객체지향프로그래밍이란 6편 -다형성,캡슐화-

1. 다형성(polymorphism) 여러 모양을 뜻하는 그리스어 동일한 메소드가 클래스에 따라 다르게 행동할 수 있다 서로 다른 클래스에 속해있는 객체들이 동일한 메시지에 대해 다른 방식으로 응답가능 부모에 talk()가 있고 자식에 talk()가 있을때, talk()를 사용하면, 어떤 talk()를 사용하게 되는가? 자식에서 talk()를 먼저 찾아봐서 있으면 자식의 talk()를 쓰고, 그렇지 않으면 부모에서 talk()를 찾아 부모 talk()를 쓰게 되는 2. method overriding(덮어쓰기) 클래스를 상속할 때, 부모 클래스에서 정의한 메소드를 자식 클래스에서 재정의하는 것 부모 클래스의 메소드 이름과 기본 기능은 그대로 사용하더라도 특정 기능을 재정의해서 바꾸고 싶을 때 예시) Pe..

2022. 7. 31. 04:29

객체지향프로그래밍이란 5편 - 추상화, 상속 -

1. 객체지향의 핵심개념 추상화, 상속, 다형성, 캡슐화 2. 추상화 함수, 변수, 클래스 blackbox같은 내부의 복잡한 원리는 잘 몰라도 필요한 것만 드러내고 쓰는것 User.login()하면 로그인.. 로그인을 어떻게 하는건데?? 그건 좀 복잡하지만 아무튼 로그인 잘하면 그만 User.logout()하면 로그아웃.. 로그아웃을 어떻게 하는건지 모르겠지만 아무튼 로그아웃이 잘 되면 그만 세상에 다양한 사람이 있지만 필요에 따라 Professor와 Student 두 그룹으로 나누는 것 그러면 professor나 student라고 하는 나만의 정의, 모음집이 생겨?? 이렇게 복잡하게 정의된 student, professor 코드에서 그냥 student.talk()하면 어떻게 말을 하는건지는 모르겠지만 ..