본문 바로가기
Data Science/OpenCV

Start OpenCV and draw on the picture/video

by 루크 Luke 2022. 1. 3.
반응형

1. Import Library

import cv2
import matplotlib.pyplot as plt
%matplotlib inline

 

2. Open the File

# 색감이 이상하게 나옴
imgBGR = cv2.imread('./data/apples.jpg')
plt.axis('off')
plt.imshow(imgBGR)
plt.show()

# RGB로 변환해서 열어주어야 함
imgRGB = cv2.cvtColor(imgBGR, cv2.COLOR_BGR2RGB)
plt.axis('off')
plt.imshow(imgRGB)
plt.show()

# 그레이스케일
imgGray = cv2.imread('./data/apples.jpg', cv2.IMREAD_GRAYSCALE)
plt.axis('off')
plt.imshow(imgGray, cmap='gray')
plt.show()

 

3. Info of img

# dimension
imgRGB.ndim

# data shape
imgRGB.shape

# size
imgRGB.size

# datatype
imgRGB.dtype

Cf. info 관련 참고사항

4. Mask copy

- ROI(Region of Interest) : 관심영역, 영상에서 특정 연산을 수행하고자 하는 임의의 부분 영역

- 마스크 연산 : 일부 함수*에 대해 ROI 연산을 지원하며, 마스크 영상을 인자로 함께 전달해야 함

- 일부 함수* : cv2.copyTo(), cv2.calcHist(), cv2.bitwise_or(), cv2.matchTemplate(), etc.

- 마스크 영상은 cv2.CV_8UC1 타입(그레이스케일 영상)

# 원본
src = cv2.imread('./data/airplane.bmp', cv2.IMREAD_COLOR)
plt.imshow(src)

# 마스크
mask = cv2.imread('./data/mask_plane.bmp', cv2.IMREAD_GRAYSCALE)
plt.imshow(mask, cmap='gray')

# 붙여넣을 곳(영상)
dst = cv2.imread('./data/field.bmp', cv2.IMREAD_COLOR)
plt.imshow(dst)

# 카피
plt.imshow(cv2.copyTo(src, mask, dst))

 

5. Drawing

- line, rectangle, circle, polylines, putText

# line, rectangle, circle, polylines, text
import numpy as np
img = np.full((400, 400, 3), 255, np.uint8)

cv2.line(img, (50, 50), (200, 50), (0, 0, 225), 5)
cv2.line(img, (50, 60), (150, 160), (0, 0, 128))

cv2.rectangle(img, (50, 200, 150, 100), (0, 255, 0), 2)
cv2.rectangle(img, (70, 220), (180, 280), (0, 128, 0), -1)

cv2.circle(img, (300, 100), 30, (255, 255, 0), -1, cv2.LINE_AA)
cv2.circle(img, (300, 100), 60, (255, 0, 0), 3, cv2.LINE_AA)

pts = np.array([[250, 200], [300, 200], [350, 300], [250, 300]])
cv2.polylines(img, [pts], True, (255, 0, 255), 2)

text = 'Hello, Crazy Deep Learning ' + cv2.__version__
cv2.putText(img, text, (50, 350), cv2.FONT_HERSHEY_COMPLEX_SMALL, 0.8, 
            (0, 0, 255), 1, cv2.LINE_AA)

plt.imshow(img);
반응형

'Data Science > OpenCV' 카테고리의 다른 글

OpenCV - Filtering  (0) 2022.01.03
OpenCV - VideoCapture, VideoWriter  (0) 2022.01.03

댓글