autojs红眼特效

news/2024/10/17 7:54:34/

牙叔教程 简单易学

效果展示

在这里插入图片描述

autojs版本

8.8.2-0

代码简介

  1. 识别眼睛, 使用的是百度的人脸检测
  2. 在眼睛的位置, 画红眼特效, 使用了阴影, 模糊
  3. 红眼特效区域使用path.quadTo画了一个菱形曲线

get知识点

  1. 百度人脸检测token的获取
  2. 百度人脸检测
  3. 输入框监听
  4. 复选框和draw事件的交互
  5. 颜色正则校验
  6. 菱形曲线的绘制
  7. 阴影
  8. 模糊
  9. 画布旋转
  10. 画布缩放

代码讲解

1. 获取人脸信息
function 获取人脸信息(imgPath) {imgPath = files.path(imgPath);let access_token = "xxxxxxxxxxx";let url = "https://aip.baidubce.com/rest/2.0/face/v3/detect?access_token=" + access_token;let img = images.read(imgPath);let imgBase64 = images.toBase64(img);let res_json = http.post(url,{image: imgBase64,image_type: "BASE64",face_field: "landmark",},{headers: {"Content-Type": "application/json",},}).body.json();let faceList = res_json.result.face_list;return faceList;
}
2. 提取眼睛数据
function 识别眼睛(imgPath) {let faceList = 获取人脸信息(imgPath);let landmark72 = faceList[0].landmark72;let eye = {center: landmark72[38],pointList: landmark72.slice(30, 38),};return eye;
}
3. 设置全局变量
let 特效高度 = 4;
let 动画缩放倍数 = 1;
let 旋转角度 = 0;
let 一次旋转度数 = 1;
let 旋转间隙时长 = 8;
let 主色 = "#ff0000";
4. 获取图片数据
let imgPath = "./女生人脸.jpg";
let img = images.read(imgPath);
let iw = img.getWidth();
let ih = img.getHeight();
let mBitmap = img.getBitmap();
5. 退出时回收图片
events.on("exit", function () {log("结束运行");mBitmap.recycle();img.recycle();
});
6. UI布局, 画板和图片宽高一样, 方便处理
ui.layout(<vertical marginTop="50"><text textSize="23sp" w="*" gravity="center" textStyle="bold">红眼特效</text><frame w="*" gravity="center"><canvas id="board" w="{{iw}}px" h="{{ih}}px"></canvas></frame><text textSize="23sp" w="*" gravity="center" margin="9" textColor="#1e90ff">牙叔教程 简单易学</text><text id="state" textSize="23sp" w="*" gravity="center">正在识别眼睛, 请稍后</text><vertical marginLeft="80"><horizontal><text>主色</text><input id="主色" w="99"></input></horizontal><horizontal><checkbox id="旋转" text="旋转" gravity="center"></checkbox><text marginLeft="10">一次旋转度数</text><input id="一次旋转度数" w="55"></input></horizontal><checkbox id="缩放" text="缩放" gravity="center"></checkbox><checkbox id="音效" text="音效" gravity="center"></checkbox></vertical></vertical>
);
7. 设置输入框和复选框监听事件
ui.一次旋转度数.addTextChangedListener(new android.text.TextWatcher({afterTextChanged: function (text) {let content = text.toString();if (一次旋转度数正则校验(content)) {一次旋转度数 = parseInt(content);} else {log("颜色正则校验 不通过");log(content);}},})
);ui.音效.on("check", (checked) => {if (checked) {打开音效();} else {关闭音效();}
});
8. 画红眼特效
function 画红眼特效(bw, bh, eye) {let eyeCenter = eye.center;let bcx = bw / 2;let bcy = bh / 2;let 白色菱形画笔 = get白色菱形画笔();let 白色菱形path = get白色菱形path(eyeCenter.x, eyeCenter.y);let 红色菱形画笔 = get红色菱形画笔();let 红色菱形path = get红色菱形path(eyeCenter.x, eyeCenter.y, bw);ui.board.on("draw", function (canvas) {canvas.drawBitmap(mBitmap, 0, 0, null);if (ui.旋转.checked) {canvas.rotate(旋转角度, eyeCenter.x, eyeCenter.y);} else {canvas.rotate(-25, eyeCenter.x, eyeCenter.y);}if (ui.缩放.checked) {canvas.scale(动画缩放倍数, 动画缩放倍数, eyeCenter.x, eyeCenter.y);}红色菱形画笔.setColor(colors.parseColor(主色));canvas.drawPath(红色菱形path, 红色菱形画笔);白色菱形画笔.setColor(colors.parseColor("#ffffff"));canvas.drawPath(白色菱形path, 白色菱形画笔);});
}

完整源码

公众号回复 红眼特效

感谢大佬指点

@狸猫🐱

声明

部分内容来自网络
本教程仅用于学习, 禁止用于其他用途

bilibili

牙叔教程

微信公众号 牙叔教程

在这里插入图片描述

QQ群

747748653
在这里插入图片描述

在这里插入图片描述


http://www.ppmy.cn/news/784121.html

相关文章

祛除红眼算法python实现

最近研究了一下祛除红眼的算法&#xff0c;主要的思想都是将RGB通道里面的R通道给想法设法的降低&#xff0c;其他的通道稍微进行变换就行&#xff0c;这里使用python运行了一下例子看看&#xff0c; version2参考了代码&#xff1a;https://www.cnblogs.com/cpuimage/p/90002…

PicoNEO3离线升级包5.2.3版本

如果你是担心升级到最新版后无法安装学习版资源&#xff0c;请先看该教程 Pico4&Pico3 5.3版本破解游戏版权认证的工具来啦&#xff01; https://www.bilibili.com/read/cv21711908 5.2.3旧版 MD5&#xff1a;C8012B4F3E8D77AAB4BB52663438855F 使用离线升级包时建议先…

S32DS 3.4 3.5颜色配色方案及代码自动补全提示

S32DS_3.4_3.5_插件 11.92 MB (3 files) org.eclipse.cdt.ui_6.6.100.202009302259.jar_替S32DS_3.4版 5.94 MBorg.eclipse.cdt.ui_7.2.0.202110051412.jar_替S32DS_3.5版 5.98 MBS32DS 3.4_3.5_eclipse_C_Cplusplus_Style颜色主题配置.epf 6.06 KB 使用方法&#xff1a; ①…

dlib实现红眼特效

效果 &#xff08;图片来源网络&#xff0c;如有侵权请联系删除&#xff09; 摘要 技术栈如下&#xff1a; 代码演示&#xff1a;python 面部关键点识别&#xff1a;dlib 图像处理&#xff1a;pillow&#xff0c;opencv 人脸关键点 既然是做人眼部位的贴图&#xff0c…

数字图像处理——红眼去除(Python)

输入的图像一般都是RGB三层&#xff0c;但是红眼区域的定义是在HSI空间上进行定义&#xff0c;因此需要存在两个函数将图像数据在RGB空间与HSI空间进行转换&#xff0c;而转换的公式如下图所示&#xff1a; 原始图片数据&#xff1a; 实验代码&#xff1a; import mathi…

k8s的资源配置清单的管理操作

目录 一、资源配置清单1.1 初步认识资源清单中svc的重要配置项1.2 手动编写 svc资源配置1.3 手动生成模板&#xff0c;再编写资源清单1.4 写yaml太累怎么办&#xff1f;1.5 官网下载资源模板 一、资源配置清单 Kubernetes 支持 YAML 和 JSON 格式管理资源对象 JSON 格式&#…

sqlserver数据库命令行客户端安装

项目情况 项目上需要通过执行sql语句去更新一些功能 直接进入数据库去进行执行太麻烦&#xff0c; 对基础技术人员的要求比较高&#xff0c;执行效率低 参考资料 sqlcmd 实用工具 - SQL Server | Microsoft Learn 下载 ODBC Driver for SQL Server - ODBC Driver for SQL S…

Windows 10 启动出现蓝屏 终止代码:UNMOUNTABLE_BOOT_VOLUME

解决办法&#xff1a;在命令符窗口中【管理员权限】 1、– 修复Windows文件&#xff1a;损坏的Windows文件可能会导致严重的问题。 sfc /scannow2 、– 修复硬盘&#xff1a;确保您的硬盘依次运行&#xff0c;以及Windows。 chkdsk c: /f 或 chkdsk /f 或 chkdsk /r