LVGL如何显示摄像头采集的数据?
-
请问LVGL支持显示摄像头采集的数据吗?如果支持,大概怎么操作呢?
-
@cruise33 LVGL和采集摄像头数据两者不相干; 只是完成了后者可以用前者配合显示
-
现在应该是没有LVGL的插件支持摄像头数据采集吧。可以先使用V4L2 ioctl采集数据,然后将采集到的YUV数据给LVGL显示。
-
@aldfaaa 了解,感谢回复!
-
@chengwei_peng 能直接显示YUV么?应该要将YUV转成RGB,再给LVGL显示吧?
-
@cruise33 lvgl输出的话要转,但是如果使用多图层,图层是支持yuv直出的,可以不用转换
-
- LVGL跟多图层是怎么配合的?用virvi2vo显示摄像头图像,再加上LVGL,显示就被LVGL覆盖了
- LVGL是怎么输出指针中的数据?用lv_img_set_src的方式不可行(只支持内部数组、外部图片文件和bin文件等)
- framebuffer、disp、DE这三者是啥关系?
-
通过mpp采集摄像头数据,经g2d缩放转成rgb给lvgl能正常显示了(数组方式),但帧率有点低,有更好的做法吗? 要显示摄像头数据的话,最好用vo模块来显示吧,如果想在其基础上,加lvgl的UI控件,应该怎么操作呢?
-
@cruise33 用virvi2vo显示摄像头图像后,再加上LVGL,显示就被LVGL覆盖了,是因为UI是在最上层,需要挖空摄像头部分的数据,可以清空framebuffer后,设置背景为透明的,参考如下代码
if (lv_obj_has_state(btn, LV_STATE_CHECKED)) { lv_label_set_text(label, "Stop"); lv_disp_get_default()->driver->screen_transp = 1; lv_disp_set_bg_opa(lv_disp_get_default(), LV_OPA_TRANSP); /* Empty the buffer, not emptying will cause the UI to be opaque */ lv_memset_00(lv_disp_get_default()->driver->draw_buf->buf_act, lv_disp_get_default()->driver->draw_buf->size * sizeof(lv_color32_t)); lv_style_set_bg_opa(&style_scr_act, LV_OPA_TRANSP); lv_obj_report_style_change(&style_scr_act); } else { lv_label_set_text(label, "Play"); lv_disp_get_default()->driver->screen_transp = 0; lv_disp_set_bg_opa(lv_disp_get_default(), LV_OPA_COVER); lv_style_set_bg_opa(&style_scr_act, LV_OPA_COVER); lv_obj_report_style_change(&style_scr_act); }
并且lv_conf.h中#define LV_COLOR_SCREEN_TRANSP 1
-
@anruliu 感谢指导!
按着思路尝试设置背景透明,清空framebuffer,但屏幕还是白茫茫一片
操作如下:
-
LV_COLOR_SCREEN_TRANSP设为1
-
代码
for(i=0;i<VIPP2VO_NUM;i++) { CreateVIPP2VOLink(i, &stContext); result = AW_MPI_ISP_SwitchIspConfig(stContext.mConfigPara.mVIPP2VOConfigArray[i].mIspDev, stContext.mConfigPara.mIspWdrSetting); if(result != SUCCESS) printf("fatal error! isp switch wdr[%d] fail[%d]", stContext.mConfigPara.mIspWdrSetting, result); } static lv_style_t style_scr_act; lv_style_init(&style_scr_act); lv_disp_get_default()->driver->screen_transp = 1; lv_disp_set_bg_opa(lv_disp_get_default(), LV_OPA_TRANSP); lv_memset_00(lv_disp_get_default()->driver->draw_buf->buf_act, lv_disp_get_default()->driver->draw_buf->size * sizeof(lv_color32_t)); lv_style_set_bg_opa(&style_scr_act, LV_OPA_TRANSP); lv_obj_report_style_change(&style_scr_act);
是这样操作吗?lv_disp_get_default()就是获取默认屏幕吗
我看网上教程有类似的操作,做了好些尝试也不管用
-
-
@cruise33 要应用你设置的风格啊
lv_obj_add_style(lv_scr_act(), &style_scr_act, 0);
-
此回复已被删除! -
@anruliu 我搞定了,感谢感谢!! 这样就可以了
static lv_style_t style_scr_act; lv_style_init(&style_scr_act); lv_style_set_bg_opa(&style_scr_act, LV_OPA_TRANSP); lv_obj_add_style(lv_scr_act(), &style_scr_act, 0); lv_disp_set_bg_opa(lv_scr_act(), LV_OPA_TRANSP);
-
@cruise33 你好 能分享一下源码 怎么实现的吗 感谢
-
-
@biubiu 在 LVGL如何显示摄像头采集的数据? 中说:
@dybzz2 韦老师那边有参考:https://www.bilibili.com/video/BV1rF411f7Fw
你好,我看这个视频中韦老师写的代码,nv12 转 jpg的部分是使用的 cpu转化的,可以提供一下 g2d 转化的实现代码吗?
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号