본문 바로가기

데이터 과학 관련 스터디33

[OpenCV] RGBA 이미지 & 이미지 컬러 스페이스 변환 본 글은 파이썬으로 만드는 OpenCV프로젝트 서적의 내용을 포스팅하는 내용입니다. 4.2장 컬러 스페이스 해당 실습은 cv2 라이브러리를 이용하여 진행합니다. 1. RGBA 이미지 2. 이미지 컬러 스페이스 변환 3. 다양한 이미지 데이터 포맷 1. RGBA 이미지 보통 이미지는 R,G,B 3채널을 갖는 데이터이지만, 추가로 alpha 채널을 갖는 이미지 데이터도 존재합니다. 가끔씩 보면, 위 이미지 처럼 배경이 투명한 이미지를 볼 수 있는데, 이게 알파 채널을 활용한 이미지인 것을 저도 이번에 알았네요. 실습 import cv2 import numpy as np img = cv2.imread('../CV2/img/opencv_logo.png') # 기본 값 옵션 bgr = cv2.imread('../.. 2022. 3. 22.
[OpenCV] 이미지 관심영역 (ROI) 추출하기 본 글은 파이썬으로 만드는 OpenCV프로젝트 서적의 내용을 포스팅하는 내용입니다. 4.1장 관심영역 해당 실습은 cv2 라이브러리를 이용하여 진행합니다. 1. 마우스로 관심영역 추출하기 2. cv라이브러리로 간단히 하기 obj detection 모델에서는 이미지의 관심영역 ROI( Region of Interest )가 라벨이 됩니다. 저는 roboflow라는 플랫폼에서 마우스로 드래그해가면서 이미지 데이터를 라벨링한 경험이 있는데, 이걸 직접 코딩해보는 실습입니다. 1. 마우스로 관심영역 추출하기 import cv2 import numpy as np isDragging = False # 마우스 드래그 상태 저장 x0,y0,w,h = -1,-1,-1,-1 # 영역 선택 좌표 저장 blue,red = (.. 2022. 3. 11.
[Open CV] 파이썬 여러개 이미지 동시 출력 본 글은 파이썬으로 만드는 OpenCV프로젝트 서적의 내용을 포스팅하는 내용입니다. 3장 Matplotlib 해당 실습은 cv2 라이브러리를 이용하여 진행합니다. 1. Matplotlib의 subplot을 이용하여 여러 이미지 동시 출력 1. Matplotlib의 subplot을 이용하여 여러 이미지 동시 출력 cv2 라이브러리를 통해 이미지 읽는 방식은 이미 포스팅을 했었지만, 이미지 여러개를 동시 출력하고 싶을 때가 있습니다. 가령 segmentation이나 gan모델을 학습할 때는 epoch마다 학습 전후 이미지 2개를 동시에 출력합니다. 이런 경우에는 matplotlib의 subplot을 이용해야하는데, 그 방식을 살펴봅니다. import cv2 import matplotlib.pyplot as .. 2022. 3. 11.
[Open CV] 파이썬 창 관리 - 마우스,키보드 이벤트/트랙바 본 글은 파이썬으로 만드는 OpenCV프로젝트 서적의 내용을 포스팅하는 내용입니다. 2장 기본 입출력 해당 실습은 cv2 라이브러리를 이용하여 진행합니다. 1. 창 관리 2. 키보드 이벤트 처리 3. 마우스 이벤트 처리 4. 마우스 이벤트 처리 2 5. 트랙바 활용 1. 창 관리 import cv2 file_path = '../CV2/img/img1.PNG' img = cv2.imread(file_path) # 이미지 기본 값으로 읽기 img_gray = cv2.imread(file_path, cv2.IMREAD_GRAYSCALE) # 이미지를 그레이 스케일로 읽기 cv2.namedWindow('origin', cv2.WINDOW_AUTOSIZE) # origin이라는 이름으로 창 생성 cv2.named.. 2022. 3. 6.
[Open CV] 파이썬 이미지에 선/ 도형/ 글씨 입력하기 본 글은 파이썬으로 만드는 OpenCV프로젝트 서적의 내용을 포스팅하는 내용입니다. 2장 기본 입출력 해당 실습은 cv2 라이브러리를 이용하여 진행합니다. 1. 이미지에 선 긋기 2. 이미지에 사각형 그리기 3. 이미지에 다각형 그리기 4. 이미지에 원/타원/호 그리기 5. 이미지에 글씨 쓰기 개인적으로는 YOLO모델로 추론한 객체에 정보를 적어줄 때 이용했던 것 같습니다. 1. 이미지에 선 긋기 import cv2 import numpy as np img = np.full((500,500,3), 255, dtype=np.uint8) cv2.imwrite('../CV2/img/blank_500.jpg', img) img = cv2.imread('../CV2/img/blank_500.jpg') cv2.li.. 2022. 3. 4.
[Open CV] 파이썬 동영상 파일 & 웹캠 읽기, 저장하기 본 글은 파이썬으로 만드는 OpenCV프로젝트 서적의 내용을 포스팅하는 내용입니다. 2장 기본 입출력 해당 실습은 cv2 라이브러리를 이용하여 진행합니다. 1. 동영상 읽기 2. 웹캠 켜기 3. 웹캠 크기 조절하기 4. 웹캠 이미지 저장하기 5. 웹캠 동영상 저장하기 1. 동영상 읽기 동영상은 이미지 프레임 하나하나를 연속적으로 읽어오는 원리입니다. 그 속도가 영상의 속도를 좌우하는데, 보통의 동영상은 40fps(frames per second)인 경우가 가장 많다고 합니다. fps에 맞는 지연속도를 구하여 프레임이 들어가는 속도를 조절하는데, 그 계산은 아래와 같습니다. 지연시간 = 1000/fps 1초를 밀리초 단위로 환산해서 제공해야하기에 1000으로 계산합니다. 지연시간이 길다는 건 fps값이 작.. 2022. 3. 3.
[OpenCV] 파이썬 이미지 읽기 / 저장하기 본 글은 파이썬으로 만드는 OpenCV프로젝트 서적의 내용을 포스팅하는 내용입니다. 2장 기본 입출력 해당 실습은 cv2 라이브러리를 이용하여 진행합니다. 1. 이미지 읽기 import cv2 print(cv2.__version__) img_file = "../CV2/img/img1.PNG" # 표시할 이미지 경로 img = cv2.imread(img_file) # 이미지를 읽어서 img 변수에 할당 if img is not None: cv2.imshow('IMG', img) # 읽은 이미지를 화면에 표시 cv2.waitKey() # 키가 입력될 때까지 대기 cv2.destroyAllWindows() # 창 모두 닫기 else: print('No image file.') cv2.imread() - 이미지.. 2022. 3. 3.
cs231n 12강 visualizing & Understanding 요약 가장 먼저 CNN안에서 어떤 일들이 일어나고 있는지를 시각화해보는 것에 대해 공부합니다. 먼저 First Layer의 filter들을 시각화합니다. AlexNet을 보면 어떤 패턴들이 명확히 보입니다. 이미지 내의 edge같은 특징들을 뽑아내기 위함입니다. 이제 이 필터들이 layer가 깊어지면서, 합성곱이 이뤄지고 점점 더 복잡해집니다. 나중에 깊은 layer의 필터들을 보면 직관적으로는 이해할 수 없는 필터들이 되죠. 이렇게 layer가 깊어질수록 이해하기 힘든 필터들이 나오고 필터도 많아지죠. 저는 정형 데이터를 딥러닝할 때의 블랙박스의 문제가 CNN에서 이렇게 이어진다고 이해했습니다. 필터를 거치면서 하나하나의 feature map들이 이미지 내에서 각각 어떤 부분의 전문가가 된다고 한 적이 있었.. 2020. 12. 26.
cs231n 11강 Detection and Segmentation요약 벌써 11강입니다. 오늘은 컴퓨터 비전중에서도 몇가지 task로 단순히 image classification이 아니라 아이디어가 결합된 모델들을 봅니다. 우선 강의하면서 계속 본 기본적인 이미지 분류를 보면, 이미지 데이터를 입력 -> 네트웍을 거치면서 feature vector 반환 -> 1000개의 카테고리별 스코어 출력 이었습니다. 위 네가지 task의 모델들을 살펴봅니다. Segmentation, localization, object detection에 대해서 공부합니다. Sementic Segmentation을 살펴봅시다. 객체가 아닌 픽셀을 분류하는 task입니다. 위 슬라이드 그대로 이미지의 모든 픽셀을 카테고리별로 분류하게 됩니다. cow는 픽셀 덩어리로 분류해버립니다. 2마리인지도 모르고.. 2020. 12. 26.