# -*- coding: utf-8 -*-
"""
Created on Mon Jul 17 14:07:36 2023
@author: admins
"""
# -*- coding: utf-8 -*-
from PIL import Image
import numpy as np
import cv2
cap =cv2.VideoCapture(0,cv2.CAP_DSHOW)
cap.set(5,10)
# 要替换的背景,分辨率为摄像头的尺寸,否则会报错
img_back=cv2.imread('bk.jpg')
while True:
ret,frame = cap.read()
if ret == False:
continue
#获取摄像头捕获相片的尺寸,替换背景图片尺寸必须与摄像头图片尺寸一致,否则会报错
rows, cols, channels = frame.shape
print(frame.shape)
lower_color = np.array([120, 120, 120])
upper_color = np.array([250, 250, 250])
# 创建掩图
fgmask = cv2.inRange(frame, lower_color, upper_color)
cv2.imshow('Mask', fgmask)
# 腐蚀膨胀
erode = cv2.erode(fgmask, None, iterations=1)
cv2.imshow('erode', erode)
dilate = cv2.dilate(erode, None, iterations=1)
cv2.imshow('dilate', dilate)
rows, cols = dilate.shape
img_back=img_back[0:rows,0:cols]
#print(img_back)
# #根据掩图和原图进行抠图
img2_fg = cv2.bitwise_and(img_back, img_back, mask=dilate)
Mask_inv = cv2.bitwise_not(dilate)
img3_fg = cv2.bitwise_and(frame, frame, mask=Mask_inv)
finalImg=img2_fg+img3_fg
cv2.imshow('res', finalImg)
k = cv2.waitKey(10) & 0xFF
if k == 27:
break
cap.release()
cv2.destroyAllWindows()
python 实时绿幕抠图
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 今天小编为大家分享的是FCPX透明通道基础教程,究竟什么是透明通道呢?透明通道就是一个阿尔法(alpha)通道,也...
- 早前我有分享过用AI算法去除图片背景的方法(AI抠图),最近看到群里有人分享了一个视频抠图的网站。同大家一起分享下...