opencv背景替换加载

本文介绍了如何结合OpenCV和MediaPipe库,实现实时视频中的背景替换。作者通过加载摄像头图像和独立视频源,创造了一个沉浸式体验,例如将孩子置于恐龙世界中。虽然当前实现是通过录屏和摄像头结合,但作者计划改进为使用独立摄像头和视频输入,以提升效果。此技术在娱乐、教育等领域有潜在应用。
摘要由CSDN通过智能技术生成

看到有个例子,使用opencv实时替换背景,就来学习了一下,觉得挺不错的,联想到小朋友上次去科技馆的时候,小朋友特别喜欢沉浸式的恐龙世界,我觉得有点意思,就想着同时加载两段视频,一段输入作为背景,另一个输入作为自己的图像覆盖在背景上,现在用的是录屏的方法,然后摄像头加载自己的图像输入这样子,代码如下:

# -*- coding: UTF-8 -*-
import cv2
import mediapipe
from PIL import ImageGrab
import numpy as np
import cvzone
from cvzone.SelfiSegmentationModule import SelfiSegmentation

#######################
#输入图像参数
cap = cv2.VideoCapture(0)
cap.set(3, 640)
cap.set(4, 480)

segmentor = SelfiSegmentation()
#######################
#定义的变量

######################
#获取背景视频
def get_bg_video():
    img = ImageGrab.grab(bbox=(100, 100, 1280, 960)) #bbox specifies specific region (bbox= x,y,width,height)
    img_np = np.array(img)
    img_np = cv2.resize(img_np, (640, 480)) #保障图像信息的尺寸一致

    return img_np

if __name__ == "__main__":
    while True:
        is_succ, img = cap.read() #获取摄像头图像
        video = get_bg_video()
        img_out = segmentor.removeBG(img, video, threshold=0.9) #去除背景
        cv2.imshow('replace_bg', img_out)

        key = cv2.waitKey(1)
        if key == ord('q'):
            break
cap.release()
cv2.destroyAllWindows()

       目前有个缺陷就是,录屏和摄像头都在一起,比较难看,后面想利用一个独立摄像头,和独立的视频来源,这样的效果会更好,当然还会有其它更好的应用场景。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值