open-cv를 이용해서 기존 영상을 새로운 배경에 적용해보겠습니다 😉
import tensorflow as tf
import cv2
import numpy as np
import matplotlib.pyplot as plt
from tf_bodypix.api import download_model, load_model, BodyPixModelPaths
bodypix_model = load_model(download_model(BodyPixModelPaths.MOBILENET_FLOAT_50_STRIDE_16))
cap = cv2.VideoCapture('hiking.mp4')
img = cv2.imread('mountain.jpg')
img = img[:720, :1280, :]
while cap.isOpened():
ret, frame = cap.read()
result = bodypix_model.predict_single(frame)
mask = result.get_mask(threshold=0.5).numpy().astype(np.uint8)
masked_image = cv2.bitwise_and(frame, frame, mask=mask)
neg = np.add(mask, -1)
inverse = np.where(neg == -1, 1, neg).astype(np.uint8)
masked_background = cv2.bitwise_and(img, img, mask=inverse)
final = cv2.add(masked_image, masked_background)
cv2.imshow('BodyPix', final)
if cv2.waitKey(10) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
plt.imshow(mask)
img = cv2.imread('mountain.jpg')
img = img[:frame.shape[0], :frame.shape[1], :]
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
Result
threshold를 조정했는데 높아질 수록 사진이 잘려나가버리는 상황발생
다른 모델들을 적용해서 결과를 확인해봐야겠습니다.
마지막으로 설치 시에 충돌이 많이 일어나서 새로운 환경을 적용하고 설치 진행을 추천드립니다.
windows python 3.8
pip install tf-bodypix
pip install tfjs_graph_converter
pip install tensorflow==2.6.0
pip install tensorflow-gpu==2.6.0
pip install opencv-python
pip install matplotlib
여기서 문제가 발생하면 -->
Keras, tensorflow-estimator 버전 확인해보셔야합니다.
tensorflow와 버전이 다르면
pip uninstall keras, tensorflow-estimator 진행
pip install keras==2.6.0 tensorflow-estimator==2.6.0
(텐서플로우와 같은 버전)
!끝!