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

巴中市住房和城乡建设局网站嘉瑞建设有限公司网站

巴中市住房和城乡建设局网站,嘉瑞建设有限公司网站,怎么可以预览自己做的网站,济南做网站企业这个简单的AR项目效果是,通过给定一张静态图片作为要视频中要替换的目标物品,当在视频中检测到图片中的物体时,通过单应矩阵做投影,将视频中的物体替换成一段视频播放。这个项目的所有素材来自自己的手机拍的视频。 静态图片&…

        这个简单的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(nfeatures=1500)
#提取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), interpolation=cv.INTER_AREA)kpVideo,descsVideo = orb.detectAndCompute(frame, None)#frame = cv.drawKeypoints(frame, kpVideo, None)#进行特征匹配bf = cv.BFMatcher()matches = bf.knnMatch(descsImg, descsVideo, k=2)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, flags=2)#找到单应矩阵#首先找到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.yayakq.cn/news/840415/

相关文章:

  • 七宝做网站网络舆情监测预警系统
  • 在国外做购物网站郑州城乡建设局官网
  • 业务网站建设c2c模式是指什么
  • 开发一个网站的费用wordpress规则
  • 营销网站建设门户网页编辑招聘要求
  • 深圳专业软件网站建设手机网站开发如何设置触摸功能
  • 做网站石家庄网站建设方式
  • 做网页链接网站景德镇做网站的公司
  • 如何通过c语言来做网站wordpress容易被收录吗
  • 网站开发哪便宜wordpress 引入文件
  • 域名哪个网站好北京如何优化网站
  • 网站建设方案确认表各行业的专业网址论坛资料
  • 柳州高端网站建设适合年轻人开的工作室
  • 如何写一个自己的网站网站关键词优化案例
  • 途牛网站建设的基本特点北京建筑公司
  • 公司网站建设包括做网站的都改行做什么了
  • 网上做网站怎么赚钱做餐饮的网站
  • 云南建个网站哪家便宜福州 建站 软件
  • 网站制作关键词农家乐网站设计费用
  • 莱州网站制作手机网站环境
  • 团购营销型网站制作北京企业建站系统费用
  • 微信小程序怎么做购物网站顶尖文案网站
  • 上海建材网站建设项目宣传网站模板
  • 波纹工作室 网站怎么免费制作网页
  • 石泉县城乡建设局网站旅游平台网站合作建设方案
  • 深圳做网站(推荐乐云践新)seo伪原创工具
  • 如何做征信公司网站wordpress企业网站制作视频教程
  • 显示网站建设中双减之下托管班合法吗
  • 对网站建设和维护好学吗深圳网站哪家强
  • 建设网站如果赚钱安卓开发基础教程