1说明 1。1孙悟空可以实现人的隐身和消失。 1。2今天,我们用pythonopencv实现摄像头视频中人的消失,就是隐身术。 2效果展示 3分析 3。1注意掩膜与实时背景的色彩,可以微调,主要是便于观察和展示。 3。2目前适用于固定摄像头背景的隐身,如果是视频,比如mp4的隐身,可能在获取背景上需要下很大功夫,暂时提供思维。 3。3源代码来自:其中的InvisibilityCloak文件夹的InvisibilityCloak。py文件进行修改、注释、删减和调试等等操作。https:github。comspmallicklearnopencv 3。4讲解清楚,注释仔细,运行成功,小白秒懂,适合收藏,经典。 3。5环境:python3。8opencv4。4。0深度deepinlinux操作系统微软编辑器vscode。 4我修改后的代码讲解InvisibilityCloak。py 4。1头注释部分,可以只是看看摄像头隐身术第一步:固定摄像头位置,获取背景第二步:人出现在摄像头内第三步:一部分红色类物体,及放大后起到隐身人的作用位操作按位运算包括按位操作有:AND,OR,NOT,XOR等。提取图片一部分的时候会很有用。比如有要将一个logo的中间部分挖掉放到另一个图里,使用简单的ROI操作是办不到的。bitwisenot是对二进制数据进行非操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制非操作,10,01参数cv2。morphologyEx(src,op,kernel)进行各类形态学的变化参数说明:src传入的图片,op进行变化的方式,kernel表示方框的大小opcv2。MORPHOPEN进行开运算,指的是先进行腐蚀操作,再进行膨胀操作opcv2。MORPHCLOSE进行闭运算,指的是先进行膨胀操作,再进行腐蚀操作开运算:表示的是先进行腐蚀,再进行膨胀操作闭运算:表示先进行膨胀操作,再进行腐蚀操作 4。2第1步:导入模块importcv2importnumpyasnp 4。3第2步:初始化图像摄入capcv2。VideoCapture(0)来自摄像头参数初始化count0background0Capturingandstoringthestaticbackgroundframe背景图读取和存储,人先不要出现60秒foriinrange(60):ret,backgroundcap。read() 4。4第3步:循环while(cap。isOpened()):31:获取摄像头实时的图片第一个参数ret为True或者False,代表有没有读取到图片第二个参数frame(img)表示截取到一帧的图片ret,imgcap。read()32:退出设置如果没有读取到图片ifnotret:退出break退出设置kcv2。waitKey(10)ifk27:break33:读取图片和颜色转换计数count1图像左右互换imgnp。flip(img,axis1)背景转换ConvertingthecolorspacefromBGRtoHSVhsvcv2。cvtColor(img,cv2。COLORBGR2HSV)34:掩膜技术要点下面的数据是针对用红色布进行隐身Generatingmasktodetectredcolorlowerrednp。array(〔0,120,70〕)upperrednp。array(〔10,255,255〕)mask1cv2。inRange(hsv,lowerred,upperred)掩膜lowerrednp。array(〔170,120,70〕)upperrednp。array(〔180,255,255〕)mask2cv2。inRange(hsv,lowerred,upperred)mask1mask1mask2Refiningthemaskcorrespondingtothedetectedredcolor开运算:表示的是先进行腐蚀,再进行膨胀操作mask1cv2。morphologyEx(mask1,cv2。MORPHOPEN,np。ones((3,3),np。uint8),iterations2)进行膨胀操作原来是3和3300和300是隐身范围大小,推荐mask1cv2。dilate(mask1,np。ones((300,300),np。uint8),iterations1)位操作按位运算bitwisenot是对二进制数据进行非操作mask2cv2。bitwisenot(mask1)是对二进制数据进行和操作res1cv2。bitwiseand(background,background,maskmask1)res2cv2。bitwiseand(img,img,maskmask2)35:Generatingthefinaloutputfinaloutputcv2。addWeighted(res1,1,res2,1,0)窗口视频展示cv2。imshow(Magic!!!,finaloutput) 5操作步骤 5。1打开摄像头。 5。2打开代码,微软编辑器,首先人不要对着摄像头,偏离,点击运行按钮,获取摄像头固定静态背景图。 5。3出现展示框,代表摄像头实时视频,人然后出现摄像头内,只要出现一点红色的布,就可以产生大约300和300的隐身范围。我用的是小学生的红领巾。 5。4本人已经亲测,可行! 分享出来,超级强和经典。