LinJoy

LinJoy

0个粉丝

1

问答

0

专栏

0

资料

LinJoy  发布于  2016-05-31 09:59:23
采纳率 0%
1个问答
5194

海思技术教学 – 抓图 Capture

 
海思技术教学 – 抓图 Capture

1. 抓图思维
    抓图我这边分为 3 种
    a. 抓取 VI 画面,由 VI 端抓取画面取得 YUV420 或 YUV422 画面资料
       通常为 Live 实时画面资料 (画面会相当于原始大小,如 708x576 1920x1080)
    b. 抓取 VO 画面,由 VO 端抓取画面取得 YUV420 或 YUV422 画面资料
       通常为译码后的数据 (画面会相当于所看到之 VO 大小)
    c. 抓取 屏幕 画面,由屏幕抓取画面取得 RGB 画面资料
       通常相同于画面分辨率

2. 抓出原始画面
    流程大同小异,但是有分不同芯片版本 (SDK 版本不同)
    我这边先只写出抓取 Function, 实际使用要看指令详解
    a. 抓取 VI 画面
        3520 以前芯片使用
            HI_MPI_VI_GetFrame 取得 VIDEO_FRAME_INFO_S 图形数据结构
        3520D 以后芯片使用
            HI_MPI_VPSS_UserGetFrame 取得 VIDEO_FRAME_INFO_S 图形数据结构
    b. 抓取 VO 画面
        使用 HI_MPI_VO_GetChnFrame 取得 VIDEO_FRAME_INFO_S 图形数据结构
        或直接使用 VDec 取得原始 VIDEO_FRAME_INFO_S 图形数据结构
    c. 抓取 屏幕 画面 (这部分比较麻烦)
        使用 HI_API_VO_GetScreenFrame 取得屏幕画面 VIDEO_FRAME_INFO_S 图形数据结构
        如果还要合并 osd 就要 YUV420 转 RGB16 或 RGB32,然后将 OSD 框限文字等
        使用 RGB 算法合并,然后再 RGB 转回 YUV420 取得 VIDEO_FRAME_INFO_S 图形数据结构

3. 进行编码取得 .jpeg 图形
    通常使用 VideoEnc 进行 JPEG 编码
    开启建立 虚拟的 VideoEnc 使用通道
        HI_MPI_VENC_CreateGroup
        HI_MPI_VENC_CreateChn
        HI_MPI_VENC_SetJpegParam
        HI_MPI_VENC_RegisterChn
        HI_MPI_VENC_StartRecvPic
    传送要编码的画面进去
        HI_MPI_VENC_SendFrame
    取得画面资料
        HI_MPI_VENC_Query (询问是否有资料)
        HI_MPI_VENC_GetStream
        注意 : 3520 之前版本头尾要加入 SOI EOI
    释放原始画面
        a. 抓取 VI 画面
            HI_API_VI_ReleaseFrame 或
            HI_MPI_VPSS_UserReleaseFrame
        b. 抓取 VO 画面
            HI_API_VO_ReleaseChnFrame 或
            HI_MPI_VPSS_UserReleaseFrame
        c. 抓取 屏幕 画面
            HI_API_VO_ReleaseScreenFrame
    释放建立通道
        HI_MPI_VENC_StopRecvPic
        HI_MPI_VENC_UnRegisterChn
        HI_MPI_VENC_DestroyChn

至于哪边有问题的再讨论吧~~
我来回答
回答2个
时间排序
认可量排序

ws19921108

0个粉丝

4

问答

0

专栏

0

资料

ws19921108 2016-07-07 15:40:56
认可0
我这么做,抓的图没有图像是为什么?
求教

ayue9_-9nb

0个粉丝

3

问答

0

专栏

0

资料

ayue9_-9nb 2017-12-15 14:54:57
认可0
楼主好,我按照你的步骤,抓的图片大小只有678字节,为什么会这么小啊
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区