做一个AR识别IP人物形象的微信小程序

简介: 做一个AR识别IP人物形象的微信小程序

一:先看效果


2023-04-14 (1).png

AR

二: 整体思路以及用到的第三方图像识别算法

1.调用微信小程序的相机功能(主要使用实时帧数据,已附链接);

       CameraFrameListener | 微信开放文档


2.  将获取到的相机实时帧数据转成base64.调取第三方图像识别算法;

Docs


该文档里边有详细的介绍怎么使用去训练我们要识别的图片或者物体,如果有问题可以随时私信我!

3.第三方识别接口识别成功以后会告诉前端扫描的是什么,以便我们去判断该播放哪一个IP人物形象的序列帧动画;

4.提前准备好我们要用到的IP人物资源,我这里是用的序列帧动画(一张张帧照片拼接起来一个人物动画),这些资源建议放在服务器上;

5.创建画布,通过小程序的canvas对所有帧动画进行渲染以及播放;

三:附上全部代码

1.index.wxml

<view class="content">
    <block wx:if="{{!isShowCamera}}">
        <view class="scan" bindtap="open">
            <view class="pup">
                <view class="pupTitle">活动规则介绍</view>
                <view class="pupbox">
                    <view class="top">
                        <view class="list">
                            <image mode="aspectFit" src="../../img/1.png"></image>
                        </view>
                        <view class="list">
                            <image mode="aspectFit" src="../../img/2.png"></image>
                        </view>
                        <view class="list">
                            <image mode="aspectFit" src="../../img/3.png"></image>
                        </view>
                        <view class="list">
                            <image mode="aspectFit" src="../../img/4.png"></image>
                        </view>
                        <view class="list">
                            <image mode="aspectFit" src="../../img/5.png"></image>
                        </view>
                        <view class="list">
                            <image mode="aspectFit" src="../../img/6.png"></image>
                        </view>
                    </view>
                    <view>
                        <view class="pupbot">纸上的人物竟然还能动起来?</view>
                        <view class="pupbot">不信?!那就对着人物形象扫一扫</view>
                        <view class="pupbot">解锁更多精彩吧</view>
                    </view>
                </view>
            </view>
            <button>知道啦</button>
        </view>
    </block>
    <block wx:else>
        <view class="page-section page-section-spacing swiper" style="height: 100vh;">
            <swiper easing-function="easeOutCubic" bindchange="swiperChange" style="height: 100vh;" vertical="{{true}}" autoplay="{{autoplay}}" interval="{{interval}}" duration="{{duration}}">
                <block>
                    <swiper-item style="height: 100vh;">
                        <block>
                            <view class="mask" style="height: 100vh;background: transparent;">
                                <camera class="camera" device-position="back" flash="off" frame-size="medium" bindinitdone="bindinitdone">
                                    <cover-view hidden="{{!show}}" class='scan-animation' animation="{{animation}}">
                                        <cover-image src="../../img/saomiao.png"></cover-image>
                                    </cover-view>
                                    <canvas class="prize-frame-canvas" type="2d" id="oneTitleFrameCanvas" style="width: {{width}}rpx;height: {{height}}rpx"></canvas>
                                    <block>
                                        <view style="display: flex;justify-content: center;">
                                            <text wx:if="{{!textShow}}" class="bottom">扫一扫,开启你的奇妙体验</text>
                                            <view wx:if="{{textShow}}" class="bottom2">
                                                <image class="shanghua" src="../../img/shanghua.png"></image>
                                                <text>上划发现更多精彩</text>
                                            </view>
                                            <view wx:if="{{textShow}}" class="left" hover-class="leftActive" bindtap="toIndex">再玩一次</view>
                                        </view>
                                    </block>
                                </camera>
                            </view>
                        </block>
                    </swiper-item>
                    <swiper-item wx:if="{{textShow}}" catchtouchmove='stopTouchMove' style="height: 100vh;">
                        <block>
                            <view class="box" style="background-color: block;">
                            </view>
                        </block>
                    </swiper-item>
                </block>
            </swiper>
        </view>
    </block>
</view>
<canvas canvas-id="myCanvas"></canvas>

2.md5.js(第三方识别接口需要用到)


         





目录
相关文章
|
存储 Oracle 关系型数据库
MySQL起源
MySQL 是一款开源的关系型数据库管理系统 (RDBMS),其历史可以追溯到1994年。当时,两位瑞典工程师 Michael Widenius 和 David Axmark 在瑞典乌普萨拉大学的计算机科学系工作,他们开始着手于一个轻量级的数据库项目,命名为 mSQL(miniSQL)。
764 2
|
存储 数据采集
时序逻辑电路的应用及其作用
一、什么时序逻辑电路 时序逻辑电路是一种电子电路,用于处理和存储时序信息。它通过使用时钟信号来控制电路的行为,以实现特定的功能。 时序逻辑电路通常由触发器和组合逻辑电路组成。触发器是一种存储器件,可以存储和传递电信号。组合逻辑电路则根据输入信号的组合产生输出信号。 时序逻辑电路的行为是根据时钟信号的变化来确定的。时钟信号是一个周期性的信号,用于同步电路的操作。在每个时钟周期中,电路根据输入信号和当前状态来计算输出信号,并在时钟信号的上升沿或下降沿时更新状态。 时序逻辑电路可以用于实现各种功能,如计数器、状态机、时序控制器等。它在数字系统中起着重要的作用,用于处理时序信息和控制电路的行为。 二、
1429 0
|
算法 Unix Linux
开源项目推荐:我个人中意的Python/C++数学库(★精品收藏★)
开源项目推荐:我个人中意的Python/C++数学库(★精品收藏★)
1781 0
|
存储 弹性计算 中间件
|
移动开发 数据可视化 数据挖掘
利用Python实现数据可视化:以Matplotlib和Seaborn为例
【10月更文挑战第37天】本文旨在引导读者理解并掌握使用Python进行数据可视化的基本方法。通过深入浅出的介绍,我们将探索如何使用两个流行的库——Matplotlib和Seaborn,来创建引人入胜的图表。文章将通过具体示例展示如何从简单的图表开始,逐步过渡到更复杂的可视化技术,帮助初学者构建起强大的数据呈现能力。
|
缓存 NoSQL 算法
14)Redis 在内存用完时会怎么办?如何处理已过期的数据?
14)Redis 在内存用完时会怎么办?如何处理已过期的数据?
353 1
|
网络协议 API 开发者
Python中的会话管理:requests.Session深度解析
Python中的会话管理:requests.Session深度解析
|
数据采集 监控 数据可视化
利用LabVIEW和数字孪生技术实现PCB电路板测试
利用LabVIEW和数字孪生技术实现PCB电路板测试
298 0
|
数据安全/隐私保护
Postman之Pre-request Script 使用详解
Postman之Pre-request Script 使用详解
722 0
|
小程序 算法 前端开发
做一个AR识别IP人物形象的微信小程序
做一个AR识别IP人物形象的微信小程序
494 0