- 카메라 연결하기
- 종료버튼
- 녹화 시작 버튼
- 녹화 종료 버튼
이미지 Capture-> 동영상 만들기
import cv2
fps = 10
fcc = cv2.VideoWriter_fourcc(*'DIVX')
out = cv2.VideoWriter('./data/sample.mp4',fcc, fps, (width, height))
for i in range(48):
img = cv2.imread(f'./data/capture{i}')
out.write(img)
out.release()
동영상 녹화
import cv2
fps = 10
fcc = cv2.VideoWriter_fourcc(*'DIVX')
video = cv2.VideoCapture(0)
width = int(video.get(3))
height = int(video.get(4))
record = False
while video.isOpened():
ret, img = video.read()
if not ret:
break
k= cv2.waitKey(30)
if k==49:
break
elif k ==50:
out = cv2.VideoWriter('./data/sample2.mp4',fcc, fps, (width, height))
record = True
elif k ==51:
record = False
out.release()
if record:
out.write(img)
cv2.imshow('img',img)
video.release()
video.destroyAllWindows()
이미지 처리
- cv2.line(배경이미지, 시작점좌표, 끝점좌표, 색상, 선두께) : 직선 그리기 함수
- cv2.circle(배경이미지, 중심좌표, 반지름, 색상, 선두께) : 원 그리기 함수
- cv2.rectangle(배경이미지, 좌상단점좌표, 우하단점좌표, 색상, 선두께) : 사각형 그리기 함수
- cv2.ellipse(배경이미지, 중심좌표, 장축/단축길이, 호의시작각, 호의 종료각, 색상, 선두께) : 타원 그리기 함수
- cv2.putText(배경이미지, 출력내용, 출력시작좌표, 폰트, 크기, 색상, 굵기) : 텍스트 입력 함수
픽셀값 바꾸기
import cv2
img= cv2.imread('./data/kangdaniel.jpg')
img[250,350] = [0,0,0]
img[251,350] = [0,0,0]
img[250,351] = [0,0,0]
img[251,351] = [0,0,0]
cv2.imshow('daniel',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
ROI(Region of Image) = 관심영역
import cv2
img= cv2.imread('./data/kangdaniel.jpg')
sub_img = img[100:370,250:500]
cv2.imshow('daniel',sub_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
도형 그리기(선, 원, 사각형, 타원, 글씨 - rectangle
import cv2
img= cv2.imread('./data/kangdaniel.jpg')
cv2.rectangle(img,(250,100),(500,450),(0,0,255),3)
cv2.imshow('daniel',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
ROI BLUR 처리하기 - filter2D
import cv2
import numpy as np
img= cv2.imread('./data/kangdaniel.jpg')
sub_img = img[150:370,250:500]
kernel = np.ones((5,5), np.float32)/25
blur = cv2.filter2D(sub_img, -1, kernel)
cv2.imshow('daniel',img)
cv2.imshow('daniel_face',sub_img)
cv2.imshow('blur', blur)
cv2.waitKey(0)
cv2.destroyAllWindows()
import cv2
import numpy as np
img= cv2.imread('./data/kangdaniel.jpg')
sub_img = img[150:370,250:500]
kernel = np.ones((7,7), np.float32)/25
blur = cv2.filter2D(sub_img, -1, kernel)
img[150:370,250:500] = blur
cv2.imshow('daniel',img)
cv2.imshow('daniel_face',sub_img)
cv2.imshow('blur', blur)
cv2.waitKey(0)
cv2.destroyAllWindows()
import cv2
img= cv2.imread('./data/kangdaniel.jpg')
tiger= cv2.imread('./data/tiger.png')
img[250:250+tiger.shape[0],300:300+tiger.shape[1]] = tiger
cv2.imshow('daniel',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
import cv2
img= cv2.imread('./data/kangdaniel.jpg')
tiger= cv2.imread('./data/tiger.png')
mask2gray = cv2.cvtColor(tiger, cv2.COLOR_RGB2GRAY)
_, mask_b = cv2.threshold(mask2gray, 200, 255, cv2.THRESH_BINARY)
mask_b_inv = cv2.bitwise_not(mask_b)
img_fg = cv2.bitwise_and(tiger, tiger, mask = mask_b_inv)
cv2.imshow('tiger_mask', img_fg)
cv2.waitKey(0)
cv2.destroyAllWindows()
bitwise_and, bitwise_not
import cv2
img= cv2.imread('./data/kangdaniel.jpg')
tiger= cv2.imread('./data/tiger.png')
mask2gray = cv2.cvtColor(tiger, cv2.COLOR_RGB2GRAY)
_, mask_b = cv2.threshold(mask2gray, 200, 255, cv2.THRESH_BINARY)
mask_b_inv = cv2.bitwise_not(mask_b)
img_fg = cv2.bitwise_and(tiger, tiger, mask = mask_b_inv)
roi = img[250:250+tiger.shape[0],300:300+tiger.shape[1]]
img_bg = cv2.bitwise_and(roi,roi, mask = mask_b)
bg_fg = cv2.add(img_bg, img_fg)
img[250:250+tiger.shape[0],300:300+tiger.shape[1]] = bg_fg
cv2.imshow('tiger_mask', img_fg)
cv2.imshow('daniel',img)
cv2.imshow('daniel_mask',img_bg)
cv2.waitKey(0)
cv2.destroyAllWindows()