RKmedia教学(zbar 二维码识别)
本帖最后由 板蓝根 于 2021-5-27 10:59 编辑[*]介绍
要想更好的使用 1126/1109 的硬件资源就必须掌握一套媒体框架。此贴会已一个智慧金融的应用场景,介绍一下 RKmedia 的,VI 、VO、RGA 模块以及 zbar 的使用。应用功能:通过 RGB 摄像头识别二维码。
[*]代码
gitlab 仓库地址: https://gitlab.com/firefly-linux/app/firefly_rkmedia_demo
源码文件:firefly_rkmedia_demo/rkmedia_vi_zbar_test.c
[*]编译
[*]由于官方使用的是 buildroot 系统,所以你需要先编译一遍官方的 SDK,来构建依赖环境。下面是编译官方 SDK 的 WIKI 链接。https://wiki.t-firefly.com/zh_CN/CAM-C11262U/Source_code.html,注意,编译之前你需要打开 buildroot 的 zbar 支持,否则后续无法编译通过。需要找到自己的使用的 config 文件并且修改。diff --git a/configs/firefly_rv1126_rv1109_uvcc_defconfig b/configs/firefly_rv1126_rv1109_uvcc_defconfig
index cbf9af861e..8cfb2980dc 100644
--- a/configs/firefly_rv1126_rv1109_uvcc_defconfig
+++ b/configs/firefly_rv1126_rv1109_uvcc_defconfig
@@ -124,3 +124,4 @@ BR2_PACKAGE_RKNPU_USE_RKNN_API=y
BR2_PACKAGE_RKNPU_USE_MINI_DRIVER=n
BR2_PACKAGE_ARCUVC=y
+BR2_PACKAGE_ZBAR=y
[*]编译完成后你会在 buildroot 仓库下找到文件系统编译依赖环境 sdk/buildroot/output/firefly_rv1126_rv1109_facial_gate/host/arm-buildroot-linux-gnueabihf/sysroot/
[*]把 SDK 的绝对路径和依赖环境的相对路径填入 RKmedia 二维码识别仓库的 build.sh 文件中# SDK 目录
SDK_PATH="/home/daijh/daijhfs/daijh/p/rk-rv1109/gitlab_merge/"
# 编译完 buildroot 后的 sysroot 目录
sysroot="$SDK_PATH/buildroot/output/firefly_rv1126_rv1109_facial_gate/host/arm-buildroot-linux-gnueabihf/sysroot/"
[*]执行脚本编译,生成可执行文件 rkmedia_vi_zbar_test./build.sh rkmedia_vi_zbar_test.c
[*]设备升级你刚刚编译出来的固件,升级方法 WIKI 链接 https://wiki.t-firefly.com/zh_CN/CAM-C11262U/upgrade.html,然后把 rkmedia_vi_zbar_test 通过 adb push 到设备中,就可以运行了adb push rkmedia_vi_zbar_test /
[*]效果
可以安装一个浏览器域名二维码生成插件,到任意网站生成二维码传到手机中。运行程序./rkmedia_vi_zbar_test -a /oem/etc/iqfiles然后把二维码放到摄像头前,打印信息就会识别出网站域名。
[*]源码分析
我会在源码上更新注释,也可以查看 WIKI RKmedia 讲解。https://wiki.t-firefly.com/zh_CN/CAM-C11262U/Rkmedia.html 。
值得学习! rkmedia_vi_zbar_test.c中第十行 ` 10 #include <zbar.h> `
请问这个zbar.h从哪里来的?
搜索发现有三个路径, 但这些都是build时生成的, 原生的codebase并无此文件, 它是怎么来的?
./buildroot/output/firefly_rv1126_rv1109/build/zbar-854a5d97059e395807091ac4d80c53f7968abb8f/include/zbar.h
./buildroot/output/firefly_rv1126_rv1109/build/buildroot-config/br2/package/zbar.h
./buildroot/output/firefly_rv1126_rv1109/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/zbar.h
找到一段疑似code,没打开, 难道是从这个地址下载后丢到./buildroot/output/firefly_rv1126_rv1109/ 里面的?
hg clone http://zbar.hg.sourceforge.net:8000/hgroot/zbar ubuntu 发表于 2021-7-16 16:50
rkmedia_vi_zbar_test.c中第十行 ` 10 #include `
请问这个zbar.h从哪里来的?
教程说了,编译buildroot时候需要编译zbar daijh223 发表于 2021-7-19 10:41
教程说了,编译buildroot时候需要编译zbar
您的话和我说的是一个东西吗?
zbar.h的生成方法 和 buildroot 存在什么联系呢? ubuntu 发表于 2021-7-20 09:21
您的话和我说的是一个东西吗?
zbar.h的生成方法 和 buildroot 存在什么联系呢?
你不把 zbar 相关依赖编译进 buildroot 怎么会有对应头文件呢? 本帖最后由 ubuntu 于 2021-7-23 14:49 编辑
板蓝根 发表于 2021-7-22 09:22
你不把 zbar 相关依赖编译进 buildroot 怎么会有对应头文件呢?
push到/oem/usr/bin 下运行失败。
:VI:"rkispp_scale0" buffer may be occupied by other modules or apps, try again...
# ./rkmedia_vi_zbar_test-a /oem/etc/iqfiles
:RKAIQ: model(rkisp0): isp_info(0): isp-subdev entity name: /dev/v4l-subdev4
:RKAIQ: parsing /dev/media2
:RKAIQ: model(rkispp0): ispp_info(0): ispp-subdev entity name: /dev/v4l-subdev0
:#V4l2Stream: camraID:1, Device:rkispp_scale0
:V4L2-CTX: openfailed No such file or directory
:Create stream v4l2_capture_stream failed
:#SourceStreamFlow[]: stream off....
:#SourceStreamFlow[]: read thread exit sucessfully!
:#SourceStreamFlow[]: stream reset sucessfully!
:VI:"rkispp_scale0" buffer may be occupied by other modules or apps, try again...
Create vi failed! ret=-11
尝试做如下两种方式排查无效, 请教该如何做?
方法1:
# reboot
# grep '' /sys/class/video4linux/video*/name
/sys/class/video4linux/video19/name:rkispp_scale0
# fuser /dev/video19
946
# kill -9 946
# ./rkmedia_vi_zbar_test-a /oem/etc/iqfiles
方法2:
# reboot
# ./RkLunch-stop.sh
# ./rkmedia_vi_zbar_test-a /oem/etc/iqfiles
运行环境:
刷机包: 官方如下最新包:AIO-RV1126_RV1109-JD4_2021_0709_1611
hw:官方购买的Core-1126-JD4› + os04a10 补充说明:进vlc 正常预览,确认camera 导通正常。 VI:"rkispp_scale0" buffer may be occupied by other modules or apps, try again...
这里已经说了 VI 被占用了,真个固件只有 RkLunch.sh 调用了摄像头。
你确定 ./RkLunch-stop.sh 之后还是报这个 log 吗?传一下完整 log 请教一下,怎么抓的log 最完整?
我尝试抓了几次,似乎都被吃了一部分.
log 提交多次总被论坛文字狱报包含敏感字符.
所以我放到如下剪贴板上了:
https://paste.ubuntu.com/p/yssTNw5qGN/