# -*- 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如何实现torrent的服务端进行文件分发p2p下载?
如何在浏览器中录制摄像头和麦克风数据为mp4视频保存下载本地?
go如何编写一个类似docker的linux的虚拟容器?
python如何写一个bittorrent的种子下载客户端?
ai能通过看一个网页的交互过程视频自主模仿复制网页编写代码吗?
ai先写功能代码通过chrome mcp来进行测试功能最后ai美化页面这个流程能行吗?
vue在手机端上下拖拽元素的时候如何禁止父元素及body的滚动导致无法拖拽完成?
使用tailwindcss如何去掉响应式自适应?
有没有直接在浏览器中运行的离线linux系统?
nginx如何保留post或get数据进行url重定向?