Seaborn
- python의 데이터 시각화 라이브러리
- 통계적 그래프를 간단하고 아름답게 생성 가능
- Matplotlib 위에서 동작
- 간결한 문법과 고급 시각화 기능 제공
- 설치 및 import
- pip install seaborn
- import seaborn as sns
- 산점도 (Scatter Plot)
- 두 변수 간의 관계를 시각적으로 표현
- hue : 색상을 이용하여 범주 표현
- style : scatter 스타일 설정
- 두 변수 간의 관계를 시각적으로 표현
- 선형 회귀선(lmplot, linear model
- 데이터의 선형적 관계를 시각적으로 표현
- 히스토그램(Histogram)
- 데이터의 분포를 확인하는데 유용
- kde(커널 밀도추정) : 분포 곡선으로 표시
- 상자 그림(Box Plot)
- 데이터 분포와 이상치를 시각적으로 분석
- 바이올린 플롯(Violin Plot)
- 상자 그림과 커널 밀도추정이 결합된 형태
- 페어 플롯(Pair Plot)
- 여러 변수 간의 관계를 한번에 확인
- 스타일 커스터마이징
- set_theme() 함수를 사용하여 스타일, 팔레트 등 테마를 설정 가능
- darkgrid, whitegrid, dark, white, ticks 등의 스타일 옵션 제공
- palette 를 통한 색상 설정 : deep, muted, bright, dark, colorblind
- 히스토그램 추가 코드를 통한 예시
- set_theme() 함수를 사용하여 스타일, 팔레트 등 테마를 설정 가능
- 그래프 크기 조정
- sns.set_context(context, rc ={"figure.figsize":(가로,세로)})
- context : paper, notebook, talk, poster 중 선택.
- rc : 선택 사항. 사전 설정된 seaborn 컨텍스트 값을 재정의하기 위한 매개변수 매핑
- 상자 그림 추가 코드를 통한 예시
- sns.set_context(context, rc ={"figure.figsize":(가로,세로)})
- 색상 팔레트 변경
- set_palette()를 사용하여 다양한 색상 테마를 적용 가능
- 복합 그래프 작성
- g = sns.FacetGrid(data,row,col,height, aspect)
- sns.FacetGrid 클래스를 사용, 특정 기준에 따라 데이터셋을 나누고, 여러개의 서브 플롯 생성
- data : DataFrame
- row:특정기준에따라행분할
- col:특정기준에따라열분할
- height : 각 면의 높이(인치)
- aspect : 가로, 세로 비율을 조절. 예를 들어, 1.6이라면 가로:세로=1.6:1
- sns.FacetGrid 클래스를 사용, 특정 기준에 따라 데이터셋을 나누고, 여러개의 서브 플롯 생성
- g.map_dataframe(func,x,kde)
- map_dataframe()을 활용하여 원하는 그래프를 적용 가능
- x : x축 설정
- kde : 밀도 곡선 추가
- set_titles(row_template, col_template)
- set_titles()를 사용해 각 플롯에 제목을 추가 가능
- row_template : 행 제목
- col_template : 열 제목
- g = sns.FacetGrid(data,row,col,height, aspect)
OpenCV
- 실시간 컴퓨터 비전을 위한 라이브러리
- python을 포함한 여러 프로그래밍 언어에서 사용 가능
- 다양한 이미지 및 영상 처리 기능 제공
- 설치 및 import
- pip install opencv-python
- import cv2
- 기본 이미지 로드 및 표시
- cv2.imread() : 이미지 로드
- cv2.imshow():이미지를 OpenCV 창에서 표시
- cv2.waitKey(0) : 키 입력을 기다린 후 창 닫기
- 이미지 크기 조정
- cv2.resize(src, dsize) -> dst
- 이미지 크기를 너비 X 높이로 조정
- src : 원본 이미지
- dsize : 새로운 이미지의 크기
- (width, height) 형식의 튜플로 지정
- dst : 새로운 이미지 반환
- cv2.resize(src, dsize) -> dst
- 이미지 색상/강도 변환
- cv2.cvtColor(src,code) -> dst
- 이미지를 다양한 색상 공간으로 변환. 색 공간은 색상(hue), 명도(lightness), 채도(chroma)
- src : 입력 이미지
- code : 변환하려는 색상 공간을 지정하는 플래그
- 일반적으로 cv2.COLOR_BGR2GRAY, cv2.COLOR_BGR2RGB, cv2.COLOR_BGR2HSV 등이 사용
- 입력 이미지의 색상 공간과 목표 색상 공간 사이의 변환 방법을 결정
- dst : 출력 이미지
- 입력 이미지와 동일한 크기와 타입
- cv2.cvtColor(src,code) -> dst
- 이미지 회전
- cv2.getRotationMatrix2D(center, angle, scale) -> retval
- 회전 변환 행렬을 생성(임의의 행렬을 원점을 중심으로 회전)
- center : 회전 중심 좌표 . (x,y) 튜플
- angle : (반시계 방향) 회전 각도(degree). 음수는 시계 방향
- scale : 추가적인 확대 비율
- retval : 2x3 어파인 변환 행렬. 실수형
- warpAffine(src, M, dsize) -> dst
- 이미지를 변환
- src : 입력 영상
- M : 2x3 어파인 변환 행렬. 실수형
- dsize : 결과 영상 크기. (w,h) 튜플. (0,0)이면 src와 같은 크기로 설정
- dst: 출력 영상
- image.shape는 이미지의 **크기(높이, 너비, 채널 수)**를 반환한다.
- cv2.getRotationMatrix2D(center, angle, scale) -> retval
- 엣지 검출 (Canny Edge Detection)
- 이미지에서 엣지를 검출
- edges = cv2.Canny(image, threshold1, threshold2)
- image: 입력 이미지. 보통 그레이스케일 이미지를 사용
- threshold1: 엣지 검출에서 사용되는 최소 임계값
- 너무 낮게 설정하면 원치 않은 edge까지 검출
- 이 값은 원하는 edge 검출 결과를 얻기 위해서 실험을 통해 찾아야함
- 일반적으로 threshold1과 threshold2를 1:2 또는 1:3 비율로 지정
- threshold2: 엣지 검출에서 사용되는 최대 임계값
- 너무 높게 설정하면 edge가 잘 검출되지 않음
- 이 값은 원하는 edge 검출 결과를 얻기 위해서 실험을 통해 찾아야함
- edges: 엣지 이미지 반환
- 블러 처리(Gaussian Blur)
- cv2.GaussianBlur(src,ksize,sigmaX) -> dst
- 가우시안 블러 필터를 적용하여 이미지의 노이즈를 제거 및 부드럽게 만들기
- src: 입력 이미지
- ksize: 가우시안 커널 크기
- 커널크기가클수록이미지가더부드러워짐
- (0, 0)을 지정하면 sigma 값에 의해 자동 결정됨
- sigmaX : x방향 sigma
- sigmaY : y방향 sigma
- X와 Y 방향의 가우시안 표준 편차(sigmaX, sigmaY).
- 0으로 설정하면 OpenCV가 자동으로 값을 계산
- cv2.GaussianBlur(src,ksize,sigmaX) -> dst
- 캐스케이드 분류기(객체/ 얼굴 검출)
- cv2.CascadeClassifier(filename)
- Haar Cascade 분류기를 로드하는 OpenCV의 클래스 » 얼굴,눈,차량번호판등의객체검출에사용
- 학습된 XML 파일을 입력으로 받아 객체를 생성
- filename : 객체 검출을 위해 사전 학습된 Haar Cascade 모델 파일
- cv2.CascadeClassifier(filename)
- 객체 검출( 얼굴 검출)
- detectMultiScale(image, scaleFactor, minNeighbors, minSize)-> Sequence[Rect]
- 객체(얼굴)를 검출하는 함수
- image : 입력 영상. CV_8U 깊이의 행렬
- scaleFactor : 검색 윈도우 확대 비율 (1보다 커야 함)
- minNeighbors : 검출 영역으로 선택하기 위한 최소 (중첩)검출 횟수
- minSize : 검출할 객체의 최소 크기
- maxSize : 검출할 객체의 최대 크기
- Sequence[Rect] : (출력) 검출된 객체의 사각형 좌표 정보
- 객체(얼굴)를 검출하는 함수
- detectMultiScale(image, scaleFactor, minNeighbors, minSize)-> Sequence[Rect]
- cv2.rectangle(img, pt1, pt2, color, thickness)
- 이미지 상에 직사각형을 그리는 데 사용
- img: 사각형을 그릴 이미지
- pt1:사각형의왼쪽상단꼭지점좌표.(x,y)형식의튜플
- pt2: 사각형의 오른쪽 하단 꼭지점 좌표. (x, y) 형식의 튜플
- color: 사각형의 색상. (B, G, R) 형식의 튜플이나 스칼라 값으로 지정 가능
- thickness: 선택적으로 사각형의 선 두께를 지정. 기본값은
-> 음수 값을 전달하면 내부를 채움
- 이미지 상에 직사각형을 그리는 데 사용


- 실시간 비디오 (웹캠) 영상 처리
- cv2.VideoCapture(index) -> retval
- index:영상데이터경로(또는실시간카메라영상데이터가져오기설정)
- camera_id + domain_offset_id 시스템 카메라를 기본 방법으로 열려면 index에 0을 전달 컴퓨터에 하나의 카메라만 연결되어 있다면 camera_id = 0 두대이상의카메라연결시,camera_id값은0보다같거나큰정수(두대일경우0또는1) domain_offset_id는 카메라 장치를 사용하는 방식을 표현하는 정수값을 의미
- 대부분 domain_offset_id는 자동 선택을 의미하는 0(CAP_ANY)을 사용하기 때문에 index 값은 camera_id와 같은 값으로 설정 장치관리자에 등록되어 있는 카메라 순서대로 인덱스 설정
- retval : cv2.VidioCapture 객체를 반환
- index:영상데이터경로(또는실시간카메라영상데이터가져오기설정)
- read() -> tuple(bool,MatLike]
- 카메라 또는 동영상 파일로부터 다음 프레임을 받아와 Mat 클래스 형식의 변수에 저장하는 함수 (읽은 프레임을 Matrix 형태로 반환)
- 정상적으로 프레임을 읽으면 반환 값이 True, 실패하면 False
- cv2.waitKey(delay)
- 키 입력을 기다리는 대기 함수
- delay : ms(밀리세컨) 단위의 시간을 입력하면 해당 시간 만큼 대기
- 리턴 값은 키보드로 입력한 키와 동일한 아스키 코드 값
- video.release()
- 동영상을 종료하면 사용했던 메모리 자원을 반환
- cv2.destroyAllWindows()
- 화면에 나타난 윈도우를 종료
- cv2.inRange(src, lowerb,upperb,dst=None) -> dst
- 특정 색상 영역 추출
- src : 입력 행렬
- lowerb : 하한 값 행렬 또는 스칼라
- upperb : 상한 값 행렬 또는 스칼라
- dst : 입력 영상과 같은 크기의 마스크 영상(numpy.uint8))
- 범위 안에 들어가는 픽셀은 255, 나머지는 0으로 설정
- cv2.bitwise_and(src1,src2, maks) -> dst
- 이미지에서 특정 영역을 추출하기 위해 이미지 비트 연산 수행
- src1 : 이미지 파일
- src2 : 이미지 파일
- mask : 적용 영역 지정
- dst : 결과 파일
- cv2.VideoCapture(index) -> retval
'Python 정리' 카테고리의 다른 글
파이썬 - 터틀 그래픽스 (0) | 2025.02.11 |
---|---|
파이썬 - tkinter (0) | 2025.02.11 |
파이썬 - 딥러닝 패키지(pandas,numpy,matplotlib) (0) | 2025.02.10 |
파이썬 - 알고리즘(DFS,BFS) (0) | 2025.02.10 |
파이썬 - 알고리즘(큐, 스택) (0) | 2025.02.10 |