Firefly开源社区

12345... 6
发表新贴

[应用开发] RKmedia教学(zbar 二维码识别)

1万

积分

14

威望

13

贡献

管理员

Rank: 9Rank: 9Rank: 9

积分
11135

优秀版主

发表于 2021-5-27 10:54:25     
本帖最后由 板蓝根 于 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 文件并且修改。
    1. diff --git a/configs/firefly_rv1126_rv1109_uvcc_defconfig b/configs/firefly_rv1126_rv1109_uvcc_defconfig
    2. index cbf9af861e..8cfb2980dc 100644
    3. --- a/configs/firefly_rv1126_rv1109_uvcc_defconfig
    4. +++ b/configs/firefly_rv1126_rv1109_uvcc_defconfig
    5. @@ -124,3 +124,4 @@ BR2_PACKAGE_RKNPU_USE_RKNN_API=y
    6. BR2_PACKAGE_RKNPU_USE_MINI_DRIVER=n

    7. BR2_PACKAGE_ARCUVC=y
    8. +BR2_PACKAGE_ZBAR=y
    复制代码

  • 编译完成后你会在 buildroot 仓库下找到文件系统编译依赖环境 sdk/buildroot/output/firefly_rv1126_rv1109_facial_gate/host/arm-buildroot-linux-gnueabihf/sysroot/
  • 把 SDK 的绝对路径和依赖环境的相对路径填入 RKmedia 二维码识别仓库的 build.sh 文件中
    1. # SDK 目录                                                                                                                                                                                                           
    2. SDK_PATH="/home/daijh/daijhfs/daijh/p/rk-rv1109/gitlab_merge/"     
    3.    
    4. # 编译完 buildroot 后的 sysroot 目录     
    5. sysroot="$SDK_PATH/buildroot/output/firefly_rv1126_rv1109_facial_gate/host/arm-buildroot-linux-gnueabihf/sysroot/"
    复制代码

  • 执行脚本编译,生成可执行文件 rkmedia_vi_zbar_test
    1. ./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 到设备中,就可以运行了
    1. adb push rkmedia_vi_zbar_test /
    复制代码


  • 效果
可以安装一个浏览器域名二维码生成插件,到任意网站生成二维码传到手机中。运行程序
  1. ./rkmedia_vi_zbar_test -a /oem/etc/iqfiles
复制代码
然后把二维码放到摄像头前,打印信息就会识别出网站域名。

decoded.png


  • 源码分析

我会在源码上更新注释,也可以查看 WIKI RKmedia 讲解。https://wiki.t-firefly.com/zh_CN/CAM-C11262U/Rkmedia.html

回复

使用道具 举报

116

积分

0

威望

0

贡献

技术小白

积分
116
发表于 2021-6-29 16:15:15     
值得学习!
回复

使用道具 举报

408

积分

0

威望

0

贡献

技术达人

Rank: 2

积分
408
发表于 2021-7-16 16:50:50     
rkmedia_vi_zbar_test.c  中第十行 ` 10 #include <zbar.h>    `
请问这个zbar.h从哪里来的?

  1. 搜索发现有三个路径, 但这些都是build时生成的, 原生的codebase并无此文件, 它是怎么来的?

  2. ./buildroot/output/firefly_rv1126_rv1109/build/zbar-854a5d97059e395807091ac4d80c53f7968abb8f/include/zbar.h
  3. ./buildroot/output/firefly_rv1126_rv1109/build/buildroot-config/br2/package/zbar.h
  4. ./buildroot/output/firefly_rv1126_rv1109/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/zbar.h

  5. 找到一段疑似code,没打开, 难道是从这个地址下载后丢到./buildroot/output/firefly_rv1126_rv1109/ 里面的?
  6. hg clone http://zbar.hg.sourceforge.net:8000/hgroot/zbar
复制代码
欢迎与我进行rv1109 rv1126 方面的技术交流.
我的QQ: 712715984
我擅长的: 手机平台的camera driver isp
回复

使用道具 举报

17

积分

0

威望

0

贡献

技术小白

积分
17
发表于 2021-7-19 10:41:36     
ubuntu 发表于 2021-7-16 16:50
rkmedia_vi_zbar_test.c  中第十行 ` 10 #include     `
请问这个zbar.h从哪里来的?

教程说了,编译buildroot时候需要编译zbar
回复

使用道具 举报

408

积分

0

威望

0

贡献

技术达人

Rank: 2

积分
408
发表于 2021-7-20 09:21:54     
daijh223 发表于 2021-7-19 10:41
教程说了,编译buildroot时候需要编译zbar

您的话和我说的是一个东西吗?
zbar.h的生成方法 和 buildroot 存在什么联系呢?
欢迎与我进行rv1109 rv1126 方面的技术交流.
我的QQ: 712715984
我擅长的: 手机平台的camera driver isp
回复

使用道具 举报

1万

积分

14

威望

13

贡献

管理员

Rank: 9Rank: 9Rank: 9

积分
11135

优秀版主

发表于 2021-7-22 09:22:03     
ubuntu 发表于 2021-7-20 09:21
您的话和我说的是一个东西吗?
zbar.h的生成方法 和 buildroot 存在什么联系呢?

你不把 zbar 相关依赖编译进 buildroot 怎么会有对应头文件呢?
回复

使用道具 举报

408

积分

0

威望

0

贡献

技术达人

Rank: 2

积分
408
发表于 2021-7-22 14:41:45     
本帖最后由 ubuntu 于 2021-7-23 14:49 编辑
板蓝根 发表于 2021-7-22 09:22
你不把 zbar 相关依赖编译进 buildroot 怎么会有对应头文件呢?

push到/oem/usr/bin 下运行失败。
[RKMEDIA][SYS][Warn]:VI[1]:"rkispp_scale0" buffer may be occupied by other modules or apps, try again...


  1. [root@RV1126_RV1109:/oem/usr/bin]# ./rkmedia_vi_zbar_test  -a /oem/etc/iqfiles

  2. [RKMEDIA][SYS][Info]:RKAIQ: model(rkisp0): isp_info(0): isp-subdev entity name: /dev/v4l-subdev4
  3. [RKMEDIA][SYS][Info]:RKAIQ: parsing /dev/media2
  4. [RKMEDIA][SYS][Info]:RKAIQ: model(rkispp0): ispp_info(0): ispp-subdev entity name: /dev/v4l-subdev0
  5. [RKMEDIA][SYS][Info]:#V4l2Stream: camraID:1, Device:rkispp_scale0

  6. [RKMEDIA][SYS][Error]:V4L2-CTX: open  failed No such file or directory
  7. [RKMEDIA][VI][Info]:Create stream v4l2_capture_stream failed
  8. [RKMEDIA][VI][Info]:#SourceStreamFlow[]: stream off....
  9. [RKMEDIA][VI][Info]:#SourceStreamFlow[]: read thread exit sucessfully!
  10. [RKMEDIA][VI][Info]:#SourceStreamFlow[]: stream reset sucessfully!
  11. [RKMEDIA][SYS][Warn]:VI[1]:"rkispp_scale0" buffer may be occupied by other modules or apps, try again...
  12. Create vi[1] failed! ret=-11
复制代码


尝试做如下两种方式排查无效, 请教该如何做?

  1. 方法1:
  2. [root@RV1126_RV1109:/]# reboot
  3. [root@RV1126_RV1109:/]# grep '' /sys/class/video4linux/video*/name
  4. /sys/class/video4linux/video19/name:rkispp_scale0
  5. [root@RV1126_RV1109:/]# fuser /dev/video19
  6. 946
  7. [root@RV1126_RV1109:/]# kill -9 946
  8. [root@RV1126_RV1109:/oem/usr/bin]# ./rkmedia_vi_zbar_test  -a /oem/etc/iqfiles

  9. 方法2:
  10. [root@RV1126_RV1109:/]# reboot
  11. [root@RV1126_RV1109:/oem]# ./RkLunch-stop.sh
  12. [root@RV1126_RV1109:/oem/usr/bin]# ./rkmedia_vi_zbar_test  -a /oem/etc/iqfiles
复制代码



运行环境:
  1. 刷机包: 官方如下最新包:AIO-RV1126_RV1109-JD4_2021_0709_1611
  2. hw:官方购买的Core-1126-JD4› + os04a10
复制代码
欢迎与我进行rv1109 rv1126 方面的技术交流.
我的QQ: 712715984
我擅长的: 手机平台的camera driver isp
回复

使用道具 举报

408

积分

0

威望

0

贡献

技术达人

Rank: 2

积分
408
发表于 2021-7-22 14:43:50     
补充说明:进vlc 正常预览,确认camera 导通正常。
欢迎与我进行rv1109 rv1126 方面的技术交流.
我的QQ: 712715984
我擅长的: 手机平台的camera driver isp
回复

使用道具 举报

1万

积分

14

威望

13

贡献

管理员

Rank: 9Rank: 9Rank: 9

积分
11135

优秀版主

发表于 2021-7-22 15:24:16     
VI[1]:"rkispp_scale0" buffer may be occupied by other modules or apps, try again...
这里已经说了 VI 被占用了,真个固件只有 RkLunch.sh 调用了摄像头。
你确定 ./RkLunch-stop.sh 之后还是报这个 log 吗?传一下完整 log
回复

使用道具 举报

408

积分

0

威望

0

贡献

技术达人

Rank: 2

积分
408
发表于 2021-7-23 15:12:40     
请教一下,怎么抓的log 最完整?
我尝试抓了几次,似乎都被吃了一部分.

log 提交多次总被论坛文字狱报包含敏感字符.
所以我放到如下剪贴板上了:
https://paste.ubuntu.com/p/yssTNw5qGN/
欢迎与我进行rv1109 rv1126 方面的技术交流.
我的QQ: 712715984
我擅长的: 手机平台的camera driver isp
回复

使用道具 举报

返回列表
12345... 6
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表