当前位置: 首页 > news >正文

支部网站及活动室建设免费建设网站有哪些

支部网站及活动室建设,免费建设网站有哪些,招标网站开发,抖音seo优化排名这个简单的AR项目效果是#xff0c;通过给定一张静态图片作为要视频中要替换的目标物品#xff0c;当在视频中检测到图片中的物体时#xff0c;通过单应矩阵做投影#xff0c;将视频中的物体替换成一段视频播放。这个项目的所有素材来自自己的手机拍的视频。 静态图片…        这个简单的AR项目效果是通过给定一张静态图片作为要视频中要替换的目标物品当在视频中检测到图片中的物体时通过单应矩阵做投影将视频中的物体替换成一段视频播放。这个项目的所有素材来自自己的手机拍的视频。 静态图片 当我在原视频中检测到这本书时会将书替换成另一个视频里的内容。 关于opencv里的透视投影单应矩阵等概念请自行百度。下面是代码 import cv2 as cv import numpy as npvideoOriginal cv.VideoCapture(../../SampleVideos/NationalGeography.mp4) videoReplace cv.VideoCapture(../../SampleVideos/Milo1.mp4) targetImg cv.imread(./book.png, cv.IMREAD_COLOR) targetH,targetW,targetC targetImg.shape#创建ORB对象 orb cv.ORB_create(nfeatures1500) #提取ORB关键点和特征描述符 kpImg,descsImg orb.detectAndCompute(targetImg, None) #调试绘制关键点 #imgDebug cv.drawKeypoints(targetImg, kpImg, None) #cv.imshow(ORB Keypoints, imgDebug) #匹配距离阈值 matchDistanceThr 0.75while True:ret,frame videoOriginal.read()if ret False:break;#frameAug表示最终合成的增强现实的结果图片frameAug frame.copy()ret,frameReplace videoReplace.read()if ret False:break;#将视频大小调整到和待替换目标图片大小frameReplace cv.resize(frameReplace, (targetW,targetH), interpolationcv.INTER_AREA)kpVideo,descsVideo orb.detectAndCompute(frame, None)#frame cv.drawKeypoints(frame, kpVideo, None)#进行特征匹配bf cv.BFMatcher()matches bf.knnMatch(descsImg, descsVideo, k2)goodMatches []for m,n in matches:if m.distance matchDistanceThr * n.distance:goodMatches.append(m)#print(len(goodMatches))#调试绘制匹配结果imgFeatureMatching cv.drawMatches(targetImg, kpImg, frame, kpVideo, goodMatches, None, flags2)#找到单应矩阵#首先找到srcPts和dstPtsif (len(goodMatches) 20):srcPts np.float32([kpImg[m.queryIdx].pt for m in goodMatches]).reshape(-1,1,2)dstPts np.float32([kpVideo[m.trainIdx].pt for m in goodMatches]).reshape(-1,1,2)#找到单应矩阵matrix,mask cv.findHomography(srcPts, dstPts, cv.RANSAC, 5)#print(matrix)#映射targetImg的四个角点到目标平面targetPts np.float32([[0,0],[0,targetH],[targetW,targetH],[targetW, 0]]).reshape(-1,1,2)targetOnVideoPts cv.perspectiveTransform(targetPts, matrix)#print(Target shape:, targetImg.shape)#print(Frame shape:, frame.shape)#print(targetPts)#print(maps to:)#print(targetOnVideoPts)#print()#绘制待替换目标图像的位置映射到视频帧后的边框结果imgTargetOnVideoBox cv.polylines(frame, [np.int32(targetOnVideoPts)], True, (255,0,255), 3)#调用warpPerspective将要替换的视频文件帧图像投影到视频帧的图像imgWarp cv.warpPerspective(frameReplace, matrix, (frame.shape[1],frame.shape[0]))#获得掩码图#首先将视频帧中要替换的区域内容的mask标记为全1白色maskForReplace np.zeros((frame.shape[0],frame.shape[1]), np.uint8)cv.fillPoly(maskForReplace, [np.int32(targetOnVideoPts)], (255,255,255))#获得原视频帧内容的mask将maskForReplace取反即可maskForVideo cv.bitwise_not(maskForReplace)#生成增强现实的帧frameAug cv.bitwise_and(frameAug, frameAug, mask maskForVideo)frameAug cv.bitwise_or(imgWarp, frameAug)cv.imshow(Augmented Video, frameAug)cv.moveWindow(Augmented Video, imgFeatureMatching.shape[1],0)cv.imshow(FeatureMatchResult, imgFeatureMatching)cv.moveWindow(FeatureMatchResult, 0,0)#cv.imshow(Mask For Video, maskForVideo)#cv.imshow(Mask For Replace, maskForReplace)#cv.imshow(WarpImage, imgWarp)#cv.moveWindow(WarpImage, 800,0)#cv.imshow(TargetOnVideo, imgTargetOnVideoBox)#cv.imshow(VideoPlayer, frame)if cv.waitKey(33) 0xFF ord(q):break;videoOriginal.release() videoReplace.release() cv.destroyAllWindows() 运行结果 Python Opencv实践简单的AR项目
http://www.pierceye.com/news/399965/

相关文章:

  • 网站建设论文的开题报告重庆市工程建设信息
  • 商务网站设计方案门户网站的优点
  • 河津网站制作wampserver做的网站
  • 洛阳专业网站设计开发制作建站公司零陵区住房和城乡建设局网站
  • 在哪里可以学做网站游戏开发大亨下载
  • 找人做ps的网站无锡 做公司网站
  • 云速建站可以建个人网站吗wordpress仿站难吗
  • 如何取外贸网站域名凡科h5制作教程
  • 蜘蛛不抓取网站的原因中山h5网站建设
  • 百度免费推广网站建网站用的免费软件
  • 网站建设西安哪里好广州做企业网站的公司
  • 汉中市网站建设爱墙 网站怎么做
  • 失物招领网站开发项目需求分析搭建外文网站
  • 免费网站空间免备案自学php做网站
  • 南宁网站建设nnit30郴州市第一职业中专
  • 想开个影视网站 那有做的莱芜信息平台
  • js做网站登录有服务器了怎么做网站
  • 郑州餐饮网站建设哪家好零基础网站建设教学在哪里
  • 讲述做网站的电影建设工程公司名字大全
  • 易语言可以做网站管理系统吗网站备案查询工信部手机版
  • 珠海建站论坛淘宝客网站做一种还是做好几种
  • 杭州公司的网站建设公司教育网站制作运营
  • 福州手游网站建设长春火车站停运了吗
  • wordpress仿站博客视频教程建筑模板哪种好
  • 手机配件网站模板雇主品牌建设
  • 列车营销网站怎么做网站 审批号
  • 嘉定公司网站设计游仙建设局官方网站
  • 青山做网站西安十大网站制作公司
  • 网站服务器租用一年多少钱啊seo优化检测
  • 北京网站建设联系电话长春市网络科技有限公司