# -*- 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()
网友回复
如何编写一个chrome插件实现多线程高速下载大文件?
cdn版本的vue在网页中出现typeerror错误无法找到错误代码位置怎么办?
pywebview能否使用webrtc远程控制共享桌面和摄像头?
pywebview6.0如何让窗体接受拖拽文件获取真实的文件路径?
如何在linux系统中同时能安装运行apk的安卓应用?
python有没有离线验证码识别ocr库?
各家的ai图生视频及文生视频的api价格谁最便宜?
openai、gemini、qwen3-vl、Doubao-Seed-1.6在ui截图视觉定位这款哪家更强更准?
如何在linux上创建一个沙箱隔离的目录让python使用?
pywebview如何使用浏览器自带语音识别与webspeech 的api?