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

青岛网站建设企业建站软件开发的环节有哪些

青岛网站建设企业建站,软件开发的环节有哪些,做爰小视频网站,手机qq邮箱发布了wordpress人体肢体动作捕捉在动漫影视制作、游戏CG 动画、实时模型驱动中有着广泛的应用#xff0c;利用 ARKit#xff0c;无须额外的硬件设备即可实现 2D和3D人体一系列关节和骨骼的动态捕捉#xff0c;由于移动AR 的便携性及低成本#xff0c;必将促进相关产业的发展。 ARBody Tr…       人体肢体动作捕捉在动漫影视制作、游戏CG 动画、实时模型驱动中有着广泛的应用利用 ARKit无须额外的硬件设备即可实现 2D和3D人体一系列关节和骨骼的动态捕捉由于移动AR 的便携性及低成本必将促进相关产业的发展。 ARBody TrackingConfiguration ARKit 配置类 ARBodyTrackingConfiguration 专用于 2D、3D人体肢体检测捕捉同时该配置类也可以设置实现 2D 图像检测和平面检测构建对现实环境的跟踪。为更真实地渲染虚拟元素ARBodyTrackingConfiguration 还支持 HDRHigh Dynamic Range Imaging高动态范围成像环境反射功能。其主要属性如下表所示。 属性名 描述 automaticSkeletonScaleEstimationEnabled 布尔值指定 ARKit是否进行人体骨骼尺寸评估设置为true 时ARKit会根据人体距离摄像头的远近调整所驱动的模型大小使其更匹配 isAutoFocusEnabled 设置是否自动对焦 planeDetection 在进行人体肢体检测跟踪时是否进行平面检测可以设置为水平horizontal或者垂直vertical或者两者都设置。设置该值后就会启动平面检测功能 automaticImageScaleEstimationEnabled 自动评估检测到的2D图像的尺寸这在设置2D 图像跟踪时有效 detectionImages 参考图像库 maximum NumberOfTrackedImages 最大可同时跟踪的2D 图像数量 wantsHDREnvironment Textures 是否使用HDR 环境纹理反射使用后渲染的虚拟元素更真实 environment Texturing 环境纹理来源可设置为自动automatic、手动manual、无none三者之一当设置为手动时需要提供环境纹理图 通常在实现人体肢体检测和人形遮挡功能时还需要设置 frameSemantics 语义属性使用ARBoodyTrackingConfiguration 配置类进行人体肢体检测和动作捕捉时frameSemantics 语义属性值只能设置 bodyDetection默认值。frameSemantics 语义属性中 bodyDetection 用于肢体检测跟踪后两个用于人形遮挡personSegmentation现实屏幕空间的人形分离而 personSegmentation WithDepth则是带有深度信息的人形分离。 2D人体姿态估计 在ARKit 中2D人体姿态估计是指对摄像头采集的视频图像中人像在屏幕空间中的姿态进行估计通常使用人体骨骼关节点来描述人体姿态。近年来随着深度学习技术的发展人体骨骼关节点检测效率与效果不断提升已经开始广泛应用于计算机视觉的相关领域。2D人体姿态检测估计在视频安防、动作分类、行为检测、人机交互、体育科学中有着广阔的应用前景。 人体骨骼关节点检测 人体骨骼关节点检测Pose Estimation主要检测人体的一些关键节点如关节、头部、手掌等通过关节点描述人体骨骼及姿态信息。人体骨骼关节点检测在计算机视觉人体姿态检测相关领域的研究中起到了基础性的作用是智能视频监控、病人监护系统、人机交互、虚拟现实、智能家居、智能安防、运动员辅助训练等应用的基础性算法。 在实际应用中由于人体具有相当的柔性会出现各种姿态和形状人体任何一个部位的微小变化都会产生一种新的姿态同时其关节点的可见性受穿着、姿态、视角等影响非常大而且还受到光照、遮挡等环境影响。除此之外2D人体关节点和3D人体关节点在视觉上会有明显的差异身体不同部位都会有视觉上的缩短效应Fore Shortening使得人体骨骼关节点检测成为计算机视觉领域中一个极具挑战性的课题。 使用2D 人体姿态估计 在 ARKit 中我们不必关心底层的人体骨骼关节点检测算法也不必自己去调用这些算法在运行使用ARBodyTrackingConfiguration 配置的ARSession 之后基于摄像头图像的2D人体姿态估计任务就会启动。 2D人体姿态检测基于屏幕空间获取的人体姿态信息没有深度值。在 ARKit 检测到屏幕空间中的人形后可以通过 ARFrame. detectedBody 获取一个 ARBody2D 对象也就是说 ARKit 目前对屏幕空间中的2D人体只支持单个人形检测。ARBody2D对象描述了检测到的人形结构信息其结构如下图所示。 通过图可以看到在使用 session_ session: ARSession,didUpdate frame: ARFrame方法获取ARFrame 中表示 2D人体的 ARBody2D 对象后就可以使用其 skeleton. jointLandmarks 获取所有关节点位置信息也可以通过其 skeleton. definition.jointNames 获取所有关节点名称。jointLandmarks 是一个包含所有关节点位置信息的数组我们可以通过索引值检索某个关节点的位置也可以通过 skeleton.landmarkfor: ARSkeleton. JointNamerawValue: jointName方法取指定关节点名称的位置信息。 2D人体姿态估计是在屏幕空间中对摄像头采集的图像进行逐帧分析解算出的关节点位置也是在屏幕空间中的归一化坐标以屏幕左上角00右下角为1,1如下图所示。 为了描述人体骨骼关节点ARKit 新建了一个 ARSkeleton 类该类包含一个人体关节点Joint集合及关节之间关系的定义该类预定义了8个关节点分别是 head、 leftFoot、 left Hand、 leftShoulder.hannnt riahtHand.rightShoulder、root.这是在应用开发中使用最多的关节点2D和3D人体肢体都包含这些关节点因此我们可以通过这些预定义的节点名字快速找到骨骼节点位置。ARSkeleton 类是ARSkeleton2D 和 ARSkeleton3D类的父类。 ARSkeleton2D 类继承自 ARSkeleton其 jointLandmarks 包含了所有2D关节点的位置信息也可以通过该类的landmarkforJointNamed方法获取某个名字关节点的位置此方法需要传递关节点的原始名称rawValue而不是 ARSkeleton 预定义的关节点名预定义关节点名可以通过其.rawValue 获取原始名称。jointLandmarks 是 simd_float2 类型数组因此我们也可以直接通过下标获取特定的关节点位置信息下标方法取值比使用 landmarkforJointNamed快得多特别是对每帧都要执行的循环操作可以节省很多时间。获取特定节点名称的索引值可以通过 definition.indexfor方法实现。除此之外还可以通过 ARSkeleton2D的isJointTracked_方法查询每一个关节点在当前帧的检测跟踪情况还可以获取每一个节点的父节点。 骨骼关节点名称 索引 父节点名称 索引 invalid -1 无 head_ joint 0 neck_1 joint 1 neck_ 1_joint 1 root 16 right_ shoulder_1 _joint 2 neck_1_joint 1 right_ forearm_joint 3 right_shoulder_1_joint 2 right_hand _joint 4 right_ forearm_joint 3 left_shoulder_1_joint 5 neck_1 _joint 1 left_forearm_joint 6 5 left_hand joint 7 left forearm_joint 6 right_upLeg_joint 8 root 16 right_leg joint 9 right_upLeg_joint 8 right_foot_ joint 10 right_leg joint 9 left_ upLeg_joint 11 root 16 left_leg joint 12 left_upLeg_joint 11 left_foot joint 13 left_leg joint 12 right_eye joint 14 head _joint 0 left_eye_joint 15 head_joint 0 root 16 Invalid -1 right_ear_joint 17 right_eye joint 14 left-ear- joint 18 left_eye_joint 15 ARKit 2D 人体骨骼关节点定义及它们之间的关联关系如上表所示通过表可以看到在ARKit 中检测到的2D人体共包含19个关节点root 节点代表了整个 ARBody2D 对象不计算在内时包含18个关节点这些关节点相互之间有很强的相关性存在紧密的父子连接关系通过节点之间的相互关系就可以画出各骨骼节点之间的连结图。 下面演示利用 ARKit 检测到的2D人体骨骼关节点信息将每一个关节点用一个圆圈标示出来具体代码如下 // // BodyTrackingView.swift // ARKitDeamo // // Created by zhaoquan du on 2024/2/1. //import SwiftUI import ARKit import RealityKitstruct BodyTrackingView: View {var body: some View {BodyTrackingViewContainer().edgesIgnoringSafeArea(.all).navigationTitle(人体骨架2D检测)} }struct BodyTrackingViewContainer:UIViewRepresentable {func makeUIView(context: Context) -ARView {let arView ARView(frame: .zero)return arView}func updateUIView(_ uiView: UIViewType, context: Context) {guard ARBodyTrackingConfiguration.isSupported else {return}context.coordinator.arView uiViewlet config ARBodyTrackingConfiguration()config.frameSemantics .bodyDetectionconfig.automaticSkeletonScaleEstimationEnabled trueuiView.session.delegate context.coordinatoruiView.session.run(config)}func makeCoordinator() - Coordinator {Coordinator()}class Coordinator: NSObject,ARSessionDelegate {var arView : ARView? nillet circleWidth: CGFloat 10let circleHeight: CGFloat 10var isPrinted falsefunc session(_ session: ARSession, didUpdate frame: ARFrame) {guard let arView arView else {return}//清除骨骼圆圈arView.layer.sublayers?.compactMap({$0 as? CAShapeLayer}).forEach({$0.removeFromSuperlayer()})guard let detectedBody frame.detectedBody else {return}guard let orientation arView.window?.windowScene?.interfaceOrientation else {return}let transform frame.displayTransform(for: orientation, viewportSize: arView.frame.size)detectedBody.skeleton.jointLandmarks.forEach { landmark inlet normalizeCenter CGPoint(x: CGFloat(landmark.x), y: CGFloat(landmark.y)).applying(transform)let center normalizeCenter.applying(.identity.scaledBy(x: arView.frame.width, y: arView.frame.height))let rect CGRect(x: center.x - circleWidth/2, y: center.y - circleWidth/2, width: circleWidth, height: circleHeight)let circleLayer CAShapeLayer()circleLayer.path UIBezierPath(ovalIn: rect).cgPatharView.layer.addSublayer(circleLayer)}if !isPrinted {let jointNames detectedBody.skeleton.definition.jointNamesfor name in jointNames {let landmark detectedBody.skeleton.landmark(for: ARSkeleton.JointName(rawValue: name))let index detectedBody.skeleton.definition.index(for: ARSkeleton.JointName(rawValue: name))print(\(name),\(String(describing: landmark)),the index is \(index) parent index is \(detectedBody.skeleton.definition.parentIndices[index]))}print(last: \(ARSkeleton2D.JointName.rightShoulder.rawValue))isPrinted true}}}}代码中实现的主要功能是在每一个检测到的2D人体关节点位置画一个圆圈效果如图所示。 ​​​​​代码很多语句都是执行画图操作但也演示了 ARKit 2D 人体检测使用的几个重要功能 1演示了如何获取屏幕空间中的 ARBody2D对象为确保代码在没有检测到2D人体时也能正确执行我们使用了 guard 语句。 2演示了如何获取2D 人体所有骨骼关节点名字集合以及各关节点索引及其父节点索引。 3演示了如何利用关节点名字获取该关节点在屏幕空间中的位置信息。 如前所述使用索引值获取特定的关节点位置信息比使用关节点名字快得多代码清演示了利用关节点名字获取对应索引值在实际开发中可以直接使用前表中各关节点的索引值以提高性能。 具体代码地址GitHub - duzhaoquan/ARkitDemo
http://www.lakalapos1.cn/news/7987/

相关文章:

  • 网站的建设属于无形资产wordpress qq空间主题
  • 深圳建设局网站首页王也头像高清
  • 网站建设实训心得一级建造师报考条件
  • 成都网站建设优点wordpress主题后台设置
  • python做网站的 框架营销传播的服务商
  • 文章网建站软件开发课程
  • 通州网站建设全包建个公司网站一年多少钱
  • 建设网站的HTML代码wordpress如何绑定域名
  • 郑州网站制作十年乐云seo网站建设技术人员要求
  • 网站开发工程师优势公司注册地址怎么写
  • 深圳网站建设在哪里可以莞城网站推广
  • 工会网站建设界面设计ui给用户的感受
  • 制作网站注册页面模板php简单购物网站源码
  • 利用html5 监控网站性能下载网站上的表格 怎么做
  • 陕西教育建设信息网站网站开发方法是什么
  • 网站开发用什么语言最安全网站开发应财务如何记账
  • 群晖怎么做网站网站的优势和劣势
  • 创建设计公司网站新浪做网站
  • 建设企业网站要多少钱idc 公司网站模板
  • 网站建设公司擅自关闭客户网络甘肃网站制作公司
  • 公司网站怎么自己做新2代理网址
  • 设计有关的网站文昌市住房和城乡建设局网站
  • 怎样做网页游戏网站局网站建设方案
  • 网站系统升级需要多久徐州网站建设解决方案
  • 网站建设倒计时单页源码贵阳网站建设方案维护
  • 做公司的宣传网站需要注意什么展示产品的网站
  • 棋牌游戏在哪做网站WordPress抓取文章
  • 营销型网站建设合同设计公司logo公司文化
  • 手机链接ppt在哪个网站做滕州外贸软件公司
  • 网站建设 doc在手机怎样使用wordpress