AWTK离线画布的应用 --- 绘制人脸框
最近研究了一下AWTK (Toolkit AnyWhere)这个GUI。发现功能挺强大,为了感受一下这个与Minigui的差别,所以做了一个在视频流上面增加人脸跟随框的功能。
实现期间,发现两个GUI还是有一些差别,所以写个文档记录一下实现的方法。
下载代码与搭建环境的事情这里就不做赘述了。
1.开启宏WITH_LCD_CLEAR_ALPHA
因为我的是linux设备,所以修改awtk-linux-fb目录下的awtk_config.py文件,增加
宏定义:
COMMON_CCFLAGS=COMMON_CCFLAGS+' -DWITH_LCD_CLEAR_ALPHA '
如果不知道位置在哪里,文件里搜索COMMON_CCFLAGS关键字,在后面追加即可。
2.设置窗口背景色
在窗口初始化的时候,需要把窗口的bg_color设置为透明的颜色。如:
widget_t* win = window_create(NULL, 0, 0, 0, 0);
cameraWin = canvas_widget_create(win, 0, 0, win->w, win->h);
widget_set_style_color(win, "bg_color", 0x00000000);
这里一开始的时候看文档,使用了这个接口设置:
widget_set_opacity(win, 0);
这个接口虽然可以把窗口设置为透明,但是后面无法正常画人脸框。所以不能使用这个接口。具体原因尚未研究。
3.使用离线画布绘制
我们这个业务场景是:视频流单独一个视层,独立于fb之外。gui创建在fb上面。在gui的应用中,需要显示视频流时,把窗口设置透明即可显示下面的视频流。
所以,我们的绘制人脸框的思路是:
清空画布 >> 绘制人脸框 >> 清空画布 >> 绘制人脸框…
初次实现,我们放在控件的paint事件中实现:
//离线画布
static ret_t on_paint_vgcanvas(void* ctx, event_t* e) {widget_t* widget = WIDGET(e->target);paint_event_t* evt = paint_event_cast(e);/* 设置离线的 canvas 为当前绘图的画布 */canvas_t* c = canvas_offline;canvas_offline_clear_canvas(c); //清空画布,避免矩形框重叠/* 获取离线的 canvas 对应的离线 bitmap */bitmap_t* offline_bitmap = canvas_offline_get_bitmap(canvas_offline);/* 开始离线 canvas 绘图 */canvas_offline_begin_draw(canvas_offline);vgcanvas_t* vg = canvas_get_vgcanvas(c);vgcanvas_save(vg);vgcanvas_set_line_width(vg, 5);point_t leftTopCorner = {0};leftTopCorner.x = faceRect.x;leftTopCorner.y = faceRect.y;widget_to_local(widget, &leftTopCorner);vgcanvas_rect(vg, leftTopCorner.x, leftTopCorner.y, faceRect.w, faceRect.h); vgcanvas_set_stroke_color(vg, color_init(0xff, 0xff, 0, 0xff));vgcanvas_stroke(vg); //画线vgcanvas_restore(vg);/* 结束离线 canvas 绘图 */canvas_offline_end_draw(canvas_offline);/* 把显存中的 bitmap 显示到在线的 canvas 中 */rect_t r = rect_init(0, 0, offline_bitmap->w, offline_bitmap->h);canvas_draw_image_ex(evt->c, offline_bitmap, IMAGE_DRAW_DEFAULT, &r);return RET_OK;
}
实现前期,一直使用画布与在线画布,想着每次使用透明色填充整个控件的矩形来清空画布,发现这样做是不行的,无法清空背景。而且,窗口的背景色也需要设置。
AWTK离线画布的应用 --- 绘制人脸框相关推荐
- ubuntu下用Qt实现人脸识别之检测人脸并绘制人脸框(三)
ubuntu下用Qt实现人脸识别之检测人脸并绘制人脸框(三) 要检测出人脸并且还要识别出这个人是谁,就得用到人脸算法,这个算法如果你足够牛X的话可以自己写出来,当然,如果像我一样是个小菜鸟的话就得领悟 ...
- Android人脸识别绘制人脸框自定义View显示
创建一个自定义的View,它将绘制人脸框,并重写 onDraw 方法以绘制矩形. 下面是一个示例代码: public class FaceBoundsView extends View {privat ...
- android 贝塞尔曲线 人脸,贝塞尔曲线绘制人脸框(框内全透明,框外半透明)
参考CropImage 制作截取头像框https://github.com/cokeduo/CropImage https://www.jianshu.com/p/c883fbf52681 //贝塞尔 ...
- Qt音视频开发44-实时人脸框
一.前言 在人脸识别到以后,需要在实时视频上将所有人脸框绘制出来,一把来说识别人脸会有多种选择,一个是识别最大人脸,这种场景主要用于刷脸门禁,还有一种是识别所有人脸,这种场景主要用于人脸识别摄像机,就 ...
- ps修改dds贴图_ZBrush建模师教你zbrush与Photoshop绘制人脸贴图,听仔细了哈
绘制写实的人脸贴图,是我们在次世代游戏角色制作流程中经常遇到的.我们可以在mudbox或者zbrush中把照片上的人脸映射到模型上面.在这里我主要介绍下zbrush结合Photoshop绘制人脸贴图. ...
- 3D建模贴图不会做?看这里,使用zbrush与Photoshop绘制人脸贴图教程
绘制写实的人脸贴图,是我们在次世代游戏角色制作流程中经常遇到的.我们可以在mudbox或者zbrush中把照片上的人脸映射到模型上面.在这里我主要介绍下zbrush结合Photoshop绘制人脸贴图. ...
- iOS 人脸识别(一)-人脸框检测(基于iOS原生)
点击上方"iOS开发",选择"置顶公众号" 关键时刻,第一时间送达! 作者:会飞的大马猴 來源:简书 文:https://www.jianshu.com/p/ ...
- android 人脸识别边框_人脸框抠图如何实现
最近在尝试做一个人脸识别项目,在对比几款主流人脸识别SDK后,采用了虹软的Arcface SDK,因为它提供了免费版本,并且可以离线使用,接入难度也比较低.项目中有一个需求就是显示检测到的人脸,但是如 ...
- 头歌 python 绘制人脸与人眼区域
import cv2 # 读取图片 img = cv2.imread('step2/image/girl.jpg') # 转换为灰阶图片 gray = cv2.cvtColor(img, cv2.CO ...
最新文章
- 家庭局域网开启AP隔离利用无线路由器互连
- socket网络编程——多进程、多线程处理并发
- Linux的rsync远程数据同步工具
- ASP.NET MVC3书店--第五节 表单编辑(第二部分)(转)
- C语言中的“悬空指针”和“野指针”是什么意思?
- 误删docker0网桥之后怎么办呢?
- 【objectMapper实体转换异常】 com.fasterxml.jackson.databind.exc.MismatchedInputException
- 【思维】Iranian ChamPions Cup
- 分析:新建短信,当我们接受人RecipientsEditor中输入+86的时候,系统会自己主动在+86后增加空格...
- 4408: [Fjoi 2016]神秘数
- [译]快照技术综述 Ⅰ
- WCF创建Rest服务(附:.net2.0创建Rest服务)
- Multi-task Learning and Beyond: 过去,现在与未来
- java velocity 语法_Velocity语法
- Mac SecureCRT 8.0.2破解版
- cypress 安装
- Android应用内跳转Scheme协议
- 电信获取光猫超级密码
- 原创 | k8s系列教程一:开篇
- 这些电脑软件堪称惊艳,你一定用得上【建议收藏】
热门文章
- 传统机器学习笔记6——回归树模型
- js逆向播放量增加,增加视频热度,uuid,sid,buvid3,aid,b_lsid, b_nut 还原实现过程
- 2020.12.25十六进制转八进制
- java程序之出差补助计算
- python项目开发常用的目录结构
- java 修改文件创建时间_Java如何更改文件的最后修改时间?
- 【细节很多的dp】Educational Codeforces Round 133 (Rated for Div. 2) C. Robot in a Hallway
- SpringBoot配置全局日期格式转换器
- 【OpenGL(SharpGL)】支持任意相机可平移缩放的轨迹球实现
- mycat学习笔记3:分库分表