“体重管理年”AI运动应用开发解决方案推荐

引言: 又是一年年末了,距国家提出“体重管理年”健康促进活动已过去一年了,您的体重达标了吗?今天,就让我们一同深入探讨单位、部门组织职工响应国家“体重管理年”活动时,在相关应用开发方面的实用解决方案。

一、「体重管理年」健康促进活动

体重管理年是由国家卫生健康委联合教育部、体育总局等16个部门于2024年6月共同发起的健康促进活动,旨在应对居民因超重肥胖引发的慢性病问题,开展为期三年的全民体重管理专项行动。

借助移动互联网与AI运动识别技术的APP、小程序,组织全体职工参与健身锻炼,积极响应国家“体重管理年”号召,具备操作简便、成效显著、数据可量化等优势,是企业、单位及各级工会组织的上佳之选。
image

二、体重管理年适应的那些AI运动场景

3.1、日常运动锻炼

职工借助AI运动小程序与APP,能够突破时间与空间的限制,随时随地开启锻炼记录之旅。在整个运动过程中,无需繁琐地手动录入运动量数据,职工只需全身心地沉浸于运动锻炼之中。待运动结束后,应用便会自动精准记录运动量,并生成包含热量消耗、BMI等各项指数的详细锻炼报告,以及直观反映锻炼情况的锻炼曲线。如此一来,职工可随时清晰掌握自身锻炼效果与历史数据,为科学规划后续锻炼提供有力依据。

3.2、运动打卡活动

通过精心策划并组织线上运动打卡活动,引导职工以周期性的方式积极参与到各类运动打卡项目中来,此举能够进一步激发并提升职工参与“体重管理年”活动的热情与积极性。线上运动打卡活动具备高度的灵活性与多样性,可组织涵盖多种运动类型的丰富项目,如跳绳、开合跳、高抬腿、俯卧撑、卷腹、仰卧起坐、深蹲(深蹲起)、平板支撑、马步蹲、坐位体前屈等,满足不同职工的个性化运动需求。活动过程中,系统将自动生成团体榜单、个人榜单、单项运动榜单以及综合运动榜单,这些榜单不仅全面反映了职工的运动参与情况与成果,更为活动的评优工作以及激励奖品的精准发放提供了坚实有力的数据支撑,确保整个活动公平、公正、公开且富有成效。

3.3、运动竞赛活动

为有效激励职工踊跃参与体重管理年活动,借助小程序、APP搭建线上运动会比拼竞赛平台不失为一个绝佳策略。这种线上运动会打破了传统体育活动的时空局限,职工无需受地域和时间的严格束缚,在活动设定的时间范围内,能够随时随地投身于运动比拼之中,充分展现个人运动风采。活动结束后,依托系统生成的详细竞赛榜单,通过科学合理的评优、评先机制,并为表现优异的职工发放具有纪念意义的激励物品,以此进一步点燃广大职工参与体重管理年活动的热情,推动活动取得更为显著的成效。

三、开发定制解决方案

如需量身打造一套自己的职工健身系统,可以选择深度开发定制或者委托第三方开发,要实现上面的AI运动锻炼、线上运动打卡、线上运动竞赛的小程序或APP,要解决的核心功能便是通过视觉识别运动,即通过手机相机捕捉用户运动画面,来实现各种运动计时、计数能力。

3.1、体重管理年小程序解决方案

小程序为作为依托微信的即来即用的轻量应用,有着开发周期短、易传播、易使用的特点,是用来承载职工健身运动系统客户端的一项不错选择,在此向您推荐通过「AI运动识别插件」来快速获得AI运动识别能力,件插件内置有跳绳、开合跳、高抬腿、俯卧撑、卷腹、仰卧起坐、深蹲(深蹲起)、平板支撑、马步蹲、坐位体前屈等运动的识别检测计时、计数分析,还能实现自定义姿态和扩展新运动项目,是快速开发AI运动小程序的最佳选择。

image

插件托管在微信小程序平台的服务市场,简单配置项目即可引入,然后通过完善的demo进行二次开发即可。

"plugins": {
	"aiSport": {
		"version": "1.0.12",
		"provider": "wx6130e578c4a26a1a"
	}
}

3.2、体重管理年APP解决方案

若追求更高的性能和用户体验,也可以选择开发AI运动APP来承载职工健身系统客户端,APP端也可以通过集成现有AI运动识别插件来快速获得AI运动识别能力,插件基于跨平台移动应用开发框架uni-app实现,可以为您的APP提供人体检测、运动识别的AI能力,插件内置有跳绳、开合跳、高抬腿、俯卧撑、卷腹、仰卧起坐、深蹲(深蹲起)、平板支撑、马步蹲、坐位体前屈等运动的识别检测计时、计数分析,更多的运动类型正在丰富中;同时插件提供了规则检测配置和姿态相似度比较两个能力,帮助您自定义扩展新运动、新姿态的识别检测。助力您快速实现AI健身、线上运动赛事、云上运动会、AI学生体测、AI美体、AI康复锻炼等应用场景的APP。

image

  • 使用代码片段
<template>
	<view class="human-detection">
		<camera id="preview" class="preview" :style="videoStyles" flash="off" :device-position="deviceKey"
			resolution="high" frame-size="low" @initdone="onCameraReady">
		</camera>
		<canvas v-if="poseDrawEnabled" class="preview graphs" type="2d" id="graphics" :style="videoStyles"></canvas>
	</view>
</template>

<script>

	const AiSports = requirePlugin("aiSport");
	const PoseGraphs = AiSports.PoseGraphs;
	const humanDetection = AiSports.humanDetection;

	export default {
		data() {
			return {
				zoom: 1,
				deviceKey: "back",
				previewWidth: 480,
				previewHeight: 640,
				previewRate: 1,

				frameWidth: 480,
				frameHeight: 640,
				status: 'unknown',
				fps: 0,
				poseFps: 0,

				isHumanBody: false
			};
		},
		computed: {
			videoStyles() {
				const style = `width:${this.previewWidth}px;height:${this.previewHeight}px;`;

				return style;
			}
		},
		mounted() {
			this.autoFitPreview(480, 640);
			this.initCanvas();
		},
		methods: {
			autoFitPreview(width, height) {
				const sifno = uni.getSystemInfoSync();
				let rate = sifno.windowWidth / width;

				this.previewWidth = width * rate;
				this.previewHeight = height * rate;
				this.previewRate = rate;
				this.frameWidth = width;
				this.frameHeight = height;
			},
			initCanvas() {

				const that = this;
				const query = uni.createSelectorQuery().in(that);
				query.select('#graphics')
					.fields({
						node: true,
						size: true
					})
					.exec((res) => {

						if (utils.isEmptyArray(res))
							return;

						const canvas = res[0].node;
						const ctx = canvas.getContext('2d');
						const dpr = uni.getSystemInfoSync().pixelRatio;
						canvas.width = res[0].width * dpr;
						canvas.height = res[0].height * dpr;
						ctx.scale(dpr, dpr);

						that.canvas = canvas;
						that.ctx = ctx;

						that.poseGraphs = new PoseGraphs(ctx, canvas.width, canvas.height, 1);
						that.poseGraphs.lineColor = "#FF8E148C";//线条颜色

					});
			},

			async detection(frame) {

				const human = await humanDetection.detectionAsync(frame);
				//无结果
				if (!human)
					this.poseGraphs.clear();
				else
					this.poseGraphs.drawing(human.keypoints);

			},

			initVideo() {

				if (this.camera)
					return;

				const that = this;
				this.camera = new CameraDevice();
				this.camera.onFrame = frame => {

					that.fps = that.camera.fps;

					//重新自适应
					if (frame.width != that.frameWidth || frame.height != that.frameHeight) {
						that.autoFitPreview(frame.width, frame.height);
						that.initCanvas();
					}

					that.detection(frame);
				};
			}
		}
	}
</script>

<style lang="scss">
	.human-detection {
		width: auto;
		height: auto;

		.preview {
			margin: auto;
			width: 480px;
			height: 640px;
		}

		.graphs {
			position: absolute;
			top: 0;
			left: 0;
			z-index: 9999;
			box-shadow: 0 0 14.4928rpx #CCC;
			background-color: rgba(0, 0, 0, 0.01);
		}
	}
</style>

四、采购成熟的AI运动系统

若不想进行开发或者只是短时间举办赛事活动,也可以采用成熟的Ai运动系统,比如「Ai乐运动系统」,支持AI运动健身、免费举办打卡赛、比拼赛、个人赛、团组赛等形式多样的线上运动赛事活动,支持多维度的排行榜,活动数据支持批量导出。如果有运营自己的AI运动小程序需求,还支持SaaS托管或私有部署的方式快速上线属于自己的AI运动系统,且提供基于现有功能进行深度定制服务。

AI乐运动

posted @ 2025-12-03 11:47  alphaair  阅读(0)  评论(0)    收藏  举报