본문 바로가기

데이터 과학 관련 스터디/OpenCV7

[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.