728x90
반응형
SMALL
1. inRange()
- 이미지에서 지정된 범위 안에 픽셀을 찾아냄
- cv2.inRange(영상, min값, max값)
✅ inRange()를 활용하여 영상에서 녹색계열만 추출하기
import cv2
src = cv2.imread('candies.png')
hsv = cv2.cvtColor(src, cv2.COLOR_BGR2HSV)
'''
RGB 녹색계열
0 <= B <= 100
128 <= G <= 255
0 <= R <= 100
HSV 녹색계열
50 <= H <= 80
150 <= S <= 255
0 <= V <= 255
'''
# HSV에서 녹색계열을 범위로 뽑아낼 수 있음
dst = cv2.inRange(hsv, (50, 150, 0), (80, 255, 255))
cv2.imshow('src', src)
cv2.imshow('dst', dst)
cv2.waitKey()
2. copyTo()
- 마스크 연산을 지원하는 픽셀 값 복사 함수
- cv2.copyTo(영상, 마스크, 출력영상=None)
✅ src의 마스크부분을 추출하여 dst에 합성하기
import cv2
src = cv2.imread('airplane.bmp')
mask = cv2.imread('mask_plane.bmp', cv2.IMREAD_GRAYSCALE)
dst = cv2.imread('field.bmp')
# 출력영상을 넣지 않으면 새로 영상을 만들어 냄
# 입력 영상과 마스크, 출력 영상의 크기가 모두 같아야 함
cv2.copyTo(src, mask, dst)
cv2.imshow('src', src)
cv2.imshow('dst', dst)
cv2.waitKey()
✅ woman.mp4와 특정 비디오파일을 이용하여 크로마키 프로그램을 만들어보자.
(단, woman.mp4 플레이 중 스페이스바를 누르면 합성)
import cv2
cap1 = cv2.VideoCapture('woman.mp4')
cap2 = cv2.VideoCapture('ocean.mp4')
w = round(cap1.get(cv2.CAP_PROP_FRAME_WIDTH))
h = round(cap1.get(cv2.CAP_PROP_FRAME_HEIGHT))
frame_cnt1 = round(cap1.get(cv2.CAP_PROP_FRAME_COUNT))
frame_cnt2 = round(cap2.get(cv2.CAP_PROP_FRAME_COUNT))
fps = round(cap1.get(cv2.CAP_PROP_FPS))
print(w)
print(h)
print(frame_cnt1)
print(frame_cnt2)
print(fps)
isKeypress = False
while True:
ret1, frame1 = cap1.read()
if not ret1:
break
if isKeypress:
ret2, frame2 = cap2.read()
if not ret2:
break
hsv = cv2.cvtColor(frame1, cv2.COLOR_BGR2HSV)
mask = cv2.inRange(hsv, (50, 150, 0), (80, 255, 255))
cv2.copyTo(frame2, mask, frame1) # 입력: 동영상2, 출력: 동영상1
cv2.imshow('frame1', frame1)
if cv2.waitKey(10) == ord(' '):
isKeypress = not isKeypress
elif cv2.waitKey(10) == 27:
break
cap1.release()
cap2.release()
728x90
반응형
LIST
'Python > Computer Vision' 카테고리의 다른 글
[파이썬, Python] OpenCV - 영상의 이진화 (0) | 2023.08.27 |
---|---|
[파이썬, Python] OpenCV - 관심영역(ROI) (0) | 2023.08.25 |
[파이썬, Python] OpenCV - 히스토그램과 영상 균등화, 정규화 (0) | 2023.08.25 |
[파이썬, Python] OpenCV - 컬러 영상과 색상 정보 (0) | 2023.08.24 |
[파이썬, Python] OpenCV - 영상의 화소 처리 (0) | 2023.08.24 |