#python #video #background #conference
Вопрос:
Задача: Я хотел бы разработать программу, которая восстанавливает «реальный» фон участника видеоконференции, когда он использует виртуальный фон. Виртуальные фоны в Teams/Zoom и Co. тем временем довольно хорошо распознают контуры человека. По краям человека есть только небольшие области (см. Красные стрелки ниже), где виден реальный фон.
Изображение с красными стрелками
Поскольку человек на видеоконференции всегда немного перемещается, эти области также перемещаются внутри изображения. Разрабатываемая программа должна «собрать» эти области в течение видеоконференции, чтобы по крупицам дополнить истинный фон. Программа должна быть выполнена в Windows 10 и написана на python.
Идея У меня нет подхода к тому, как реализовать этот проект. Моя мысль состояла в том, чтобы удалить виртуальный фон, отделить области с «реальным» фоном и объединить с ранее сохраненным изображением. Наконец, изображение отображается в качестве фона в командах/масштабировании.
В настоящее время у меня есть следующий код. Там виртуальный фон удаляется, и любое изображение может быть установлено в качестве фона. (До сих пор у меня нет опыта работы с Python.)
import cv2
import cvzone
from cvzone.SelfiSegmentationModule import SelfiSegmentation
cap = cv2.VideoCapture(0)
cap.set(3, 640)
cap.set(4, 480)
cap.set(cv2.CAP_PROP_FPS, 60)
segmentor = SelfiSegmentation()
fpsReader = cvzone.FPS()
imgBg = cv2.imread('backgrounds/1.png')
while True:
success, img = cap.read()
imgOut = segmentor.removeBG(img, imgBg, threshold=0.42)
imgStacked = cvzone.stackImages([img, imgOut], 2, 1)
fps, imgStacked = fpsReader.update(imgStacked)
cv2.imshow("image", imgStacked)
cv2.waitKey(1)
Вопрос
Я не знаю, как отфильтровать «реальные» части фона и соединить их вместе. У кого-нибудь есть подход?
Если у вас есть какие-либо вопросы или вам нужна дополнительная информация, просто дайте мне знать. Большое спасибо. 🙂