Python 정리

파이썬 - 딥러닝 패키지(Seaborn, OpenCV)

dawon-project 2025. 2. 11. 02:24

Seaborn

  • python의 데이터 시각화 라이브러리
  • 통계적 그래프를 간단하고 아름답게 생성 가능
  • Matplotlib 위에서 동작
  • 간결한 문법과 고급 시각화 기능 제공
  • 설치 및 import
    • pip install seaborn
    • import seaborn as sns
  • 산점도 (Scatter Plot)
    • 두 변수 간의 관계를 시각적으로 표현
      • hue : 색상을 이용하여 범주 표현
      • style : scatter 스타일 설정

  • 선형 회귀선(lmplot, linear model
    • 데이터의 선형적 관계를 시각적으로 표현

x => 꽃받침 길이 y-> 꽃받침 너비

  • 히스토그램(Histogram)
    • 데이터의 분포를 확인하는데 유용
    • kde(커널 밀도추정) : 분포 곡선으로 표시

  • 상자 그림(Box Plot)
    • 데이터 분포와 이상치를 시각적으로 분석

  • 바이올린 플롯(Violin Plot)
    • 상자 그림과 커널 밀도추정이 결합된 형태

  • 페어 플롯(Pair Plot)
    • 여러 변수 간의 관계를 한번에 확인

  • 스타일 커스터마이징
    • set_theme() 함수를 사용하여 스타일, 팔레트 등 테마를 설정 가능
      • darkgrid, whitegrid, dark, white, ticks 등의 스타일 옵션 제공
      • palette 를 통한 색상 설정 : deep, muted, bright, dark, colorblind
    • 히스토그램 추가 코드를 통한 예시

  • 그래프 크기 조정
    • sns.set_context(context, rc ={"figure.figsize":(가로,세로)})
      • context : paper, notebook, talk, poster 중 선택.
      • rc : 선택 사항. 사전 설정된 seaborn 컨텍스트 값을 재정의하기 위한 매개변수 매핑
      • 상자 그림 추가 코드를 통한 예시

  • 색상 팔레트 변경
    • set_palette()를 사용하여 다양한 색상 테마를 적용 가능

  • 복합 그래프 작성
    • g = sns.FacetGrid(data,row,col,height, aspect)
      • sns.FacetGrid 클래스를 사용, 특정 기준에 따라 데이터셋을 나누고, 여러개의 서브 플롯 생성
        • data : DataFrame
        • row:특정기준에따라행분할
        • col:특정기준에따라열분할
        • height : 각 면의 높이(인치)
        • aspect : 가로, 세로 비율을 조절. 예를 들어, 1.6이라면 가로:세로=1.6:1
    • g.map_dataframe(func,x,kde)
      • map_dataframe()을 활용하여 원하는 그래프를 적용 가능
      • x : x축 설정
      • kde : 밀도 곡선 추가 
    • set_titles(row_template, col_template)
      • set_titles()를 사용해 각 플롯에 제목을 추가 가능
      • row_template : 행 제목
      • col_template : 열 제목

 

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.cvtColor(src,code) -> dst
      • 이미지를 다양한 색상 공간으로 변환. 색 공간은 색상(hue), 명도(lightness), 채도(chroma)
      • src : 입력 이미지
      • code : 변환하려는 색상 공간을 지정하는 플래그
        • 일반적으로 cv2.COLOR_BGR2GRAY, cv2.COLOR_BGR2RGB, cv2.COLOR_BGR2HSV 등이 사용
        • 입력 이미지의 색상 공간과 목표 색상 공간 사이의 변환 방법을 결정
      • 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는 이미지의 **크기(높이, 너비, 채널 수)**를 반환한다.

 

  • 엣지 검출 (Canny Edge Detection)
    • 이미지에서 엣지를 검출
    • edges = cv2.Canny(image, threshold1, threshold2)
      • image: 입력 이미지. 보통 그레이스케일 이미지를 사용
      • threshold1: 엣지 검출에서 사용되는 최소 임계값
        • 너무 낮게 설정하면 원치 않은 edge까지 검출
        •  이 값은 원하는 edge 검출 결과를 얻기 위해서 실험을 통해 찾아야함
        • 일반적으로 threshold1threshold21: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
        •  XY 방향의 가우시안 표준 편차(sigmaX, sigmaY).
        •  0으로 설정하면 OpenCV가 자동으로 값을 계산

  • 캐스케이드 분류기(객체/ 얼굴 검출)
    • cv2.CascadeClassifier(filename)
      • Haar Cascade 분류기를 로드하는 OpenCV의 클래스 » 얼굴,,차량번호판등의객체검출에사용
      • 학습된 XML 파일을 입력으로 받아 객체를 생성
    •  filename : 객체 검출을 위해 사전 학습된 Haar Cascade 모델 파일

 

 

  • 객체 검출( 얼굴 검출)
    • detectMultiScale(image, scaleFactor, minNeighbors, minSize)-> Sequence[Rect]
      •  객체(얼굴)를 검출하는 함수
        • image : 입력 영상. CV_8U 깊이의 행렬
        • scaleFactor : 검색 윈도우 확대 비율 (1보다 커야 함)
        • minNeighbors : 검출 영역으로 선택하기 위한 최소 (중첩)검출 횟수
        • minSize : 검출할 객체의 최소 크기
        • maxSize : 검출할 객체의 최대 크기
        • 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 시스템 카메라를 기본 방법으로 열려면 index0을 전달 컴퓨터에 하나의 카메라만 연결되어 있다면 camera_id = 0 두대이상의카메라연결시,camera_id값은0보다같거나큰정수(두대일경우0또는1) domain_offset_id는 카메라 장치를 사용하는 방식을 표현하는 정수값을 의미
        • 대부분 domain_offset_id는 자동 선택을 의미하는 0(CAP_ANY)을 사용하기 때문에 index 값은 camera_id와 같은 값으로 설정 장치관리자에 등록되어 있는 카메라 순서대로 인덱스 설정
      • retval : cv2.VidioCapture 객체를 반환
    • 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 : 결과 파일

 

'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