Soybean

Soybean

0个粉丝

1

问答

0

专栏

0

资料

Soybean  发布于  2014-10-23 10:51:45
采纳率 0%
1个问答
19640

Hi3531如何从设备获取图像帧

 
现在只用一个简单的设备组合:vi+vpss+vo,绑定后已经可以在vo设备上看见vi采集的画面,但我想获取画面到内存中做我自己的处理。
本来可以通过vi或vpss获取画面的,在内存操作上有segmentation fault,调试过程中突然无法获取了……
vi用HI_MPI_VI_GetFrame错误代码是队列空,vpss用HI_MPI_VPSS_UserGetFrame错误代码是无法分配Buf,用HI_MPI_VPSS_UserGetGrpFrame错误代码是vpss未初始化……
到底获取图像帧的操作应该怎么进行呢?
我来回答
回答30个
时间排序
认可量排序

Soybean

0个粉丝

1

问答

0

专栏

0

资料

Soybean 2014-10-23 17:09:46
认可0
已解决⊙▽⊙

Soybean

0个粉丝

1

问答

0

专栏

0

资料

Soybean 2014-10-23 17:18:51
认可0
直接从HI_MPI_VI_GetFrame接口获取的图像数据在结构体stFrame的u32phyAddr指向的物理内存地址中,但这个API没有完成对其的映射,此时结构体内的pVirAddr指向的地址是0xcd000000(在我这边的情况是这样),这是受系统保护禁止访问的内存区域(0xc0000000之后),用户层访问的话会出现Segmentation fault。
解决方法是调用GetFrame后手动映射
[quote]pSrc[0] = (HI_U8 *)HI_MPI_SYS_Mmap(stFrame.stVFrame.u32PhyAddr[0], u32BlkSize);
pSrc[1] = pVirAddr[0] + stFrame.stVFrame.u32Stride[0] * stFrame.stVFrame.u32Height;[/quote]
然后再通过pSrc访问图像数据即可。

david

41个粉丝

368

问答

253

专栏

229

资料

david 2014-10-23 18:52:35
认可0
赞 楼主,需要像楼主一样愿意分享的兄弟。:)

Soybean

0个粉丝

1

问答

0

专栏

0

资料

Soybean 2014-10-23 23:37:34
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=8597&ptid=4035]david 发表于 2014-10-23 18:52[/url]
赞 楼主,需要像楼主一样愿意分享的兄弟。[/quote]

我刚刚接触完全是新手,也是希望论坛大家能相互学习⊙▽⊙

bhua

0个粉丝

10

问答

0

专栏

2

资料

bhua 2014-10-24 09:21:07
认可0
楼主是个好人  我也在获取图像数据然后用opencv进行处理  我是在VI通道用HI_MPI_VDEC_GetData获取数据的,开始直接用帧信息里的虚拟地址不能访问,搞了一段时间才想到需要映射,但是现在还徘徊在新问题上,我把映射的地址指针强行转成HI_U32没问题 转成char*就地址越界,这问题搞不懂啊  而且程序跑起来播了几十帧就挂了  楼主要不加个QQ一起学习可以不? 我的Q 122238073

weikemin

0个粉丝

3

问答

0

专栏

0

资料

weikemin 2014-10-24 10:24:42
认可0
赞,感谢分享

xiaotiancd

0个粉丝

1

问答

0

专栏

0

资料

xiaotiancd 2014-10-27 10:11:42
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=8596&ptid=4035]Soybean 发表于 2014-10-23 17:18[/url]
直接从HI_MPI_VI_GetFrame接口获取的图像数据在结构体stFrame的u32phyAddr指向的物理内存地址中,但这个API ...[/quote]

请问下楼主,你对FRAME数据操作完成之后,是怎么发送回去的? 我现在想用MPI_HI_VPSS_USERSEND, 每次都报错,该如何把我处理过后的Y, UV数组转换成它需要的参数呢?以及参数里的结构体其他成员该如何赋值?谢谢!

Soybean

0个粉丝

1

问答

0

专栏

0

资料

Soybean 2014-10-27 10:17:36
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=8669&ptid=4035]xiaotiancd 发表于 2014-10-27 10:11[/url]
请问下楼主,你对FRAME数据操作完成之后,是怎么发送回去的? 我现在想用MPI_HI_VPSS_USERSEND, 每次都 ...[/quote]

发送回去就把你处理完的图像数据放到结构的虚拟地址数组中就好啦,用memcpy,或者直接把指针指向你的数据也可以吧

wonrowl

0个粉丝

10

问答

0

专栏

2

资料

wonrowl 2014-10-27 13:38:10
认可0
楼主,我现在用的是3518_sdk_1.0.5.0,请问我在哪里可以得到编码h264前的yuv数据和编码后的h264帧呢,谢谢

Soybean

0个粉丝

1

问答

0

专栏

0

资料

Soybean 2014-10-27 15:23:51
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=8672&ptid=4035]wonrowl 发表于 2014-10-27 13:38[/url]
楼主,我现在用的是3518_sdk_1.0.5.0,请问我在哪里可以得到编码h264前的yuv数据和编码后的h264帧呢,谢谢[/quote]

我用的3531,编码前的yuv数据可以用跟我一样的方法从vi设备(或者从其他可输出设备)中调用API截取一帧,具体数据格式根据你对设备的参数设置而定。编码后即从venc设备输出应该是直接保存成文件了

wonrowl

0个粉丝

10

问答

0

专栏

2

资料

wonrowl 2014-10-28 10:17:58
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=8677&ptid=4035]Soybean 发表于 2014-10-27 15:23[/url]
我用的3531,编码前的yuv数据可以用跟我一样的方法从vi设备(或者从其他可输出设备)中调用API截取一帧, ...[/quote]

好的,我也这样试试,谢谢:)

xy-mcu

0个粉丝

0

问答

0

专栏

0

资料

xy-mcu 2015-02-10 19:16:43
认可0
我用VI_DUMP.C 文件里面的方法, 和楼主的基本一样。
Hi3520A_SDK_V1.0.2.0\mpp\tools\vi_dump.c   
但后面测试发现,仅仅从存储器里面copy 出YUV来(到另外ram),都要花100ms时间,是否有点过分了?这么长?
大家抓图的时间是多长呢?

yuzq

0个粉丝

4

问答

0

专栏

0

资料

yuzq 2015-03-25 22:46:03
认可0
楼主你好,有没有获取图像帧的代码啊,供参考一下~

小锐锐

0个粉丝

1

问答

0

专栏

0

资料

小锐锐 2015-04-15 14:49:12
认可0
请教下楼主,我调用HI_MPI_VI_GetFrame()都不成功.代码如下:
                HI_S32 i = 0;
                for (i = 0; i < pstPara->s32ChnCnt; i++)
                {
                        memset(&stFrameInfo, 0, sizeof(stFrameInfo));
                       
                        HI_S32 s32Ret = HI_MPI_VI_GetFrame(gs_stPara.ChnArray,&stFrameInfo);
                        if (HI_SUCCESS != s32Ret)
                        {
                                LoganTrace("HI_MPI_VI_GetFrame failed with %#x!\n", s32Ret);
                                continue;
                        }

                        LoganTrace("chn index=%d width=%d height=%d \n", gs_stPara.ChnArray,stFrameInfo.stVFrame.u32Width,stFrameInfo.stVFrame.u32Height);
                       
                        s32Ret = HI_MPI_VI_ReleaseFrame(gs_stPara.ChnArray, &stFrameInfo);
                        if (HI_SUCCESS != s32Ret)
                        {
                                LoganTrace("HI_MPI_VI_ReleaseFrame failed with %#x!\n", s32Ret);
                        }
                }
返回0xa010800e即HI_ERR_VI_BUF_EMPTY,缓冲区为空.
但是视频是有采集的,vo输出正常.

123456

0个粉丝

2

问答

0

专栏

0

资料

123456 2015-08-03 17:39:26
认可0
楼主你好请问有没有那一部分处理的源码?主要是各个接口之间如何连接起来的,新手表示完全不知从何处下手:lol

andy_mqy

1个粉丝

26

问答

0

专栏

0

资料

andy_mqy 2015-10-09 15:15:30
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=8596&ptid=4035]Soybean 发表于 2014-10-23 17:18[/url]
直接从HI_MPI_VI_GetFrame接口获取的图像数据在结构体stFrame的u32phyAddr指向的物理内存地址中,但这个API ...[/quote]

你好,请教一下是否用过从Hi3531的VPSS模块获取图像帧的方法,是否也需把物理地址映射呢?

ding3543

0个粉丝

5

问答

0

专栏

0

资料

ding3543 2015-11-24 15:21:31
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=15216&ptid=4035]小锐锐 发表于 2015-4-15 14:49[/url]
请教下楼主,我调用HI_MPI_VI_GetFrame()都不成功.代码如下:
                HI_S32 i = 0;
                for (i = 0; i < pstPara- ...[/quote]

你好,我用的是hi3516a,但是我也遇到一样的情况,3516a是利用虚拟通道17来获取raw data,但是我运行HI_MPI_VI_GetFrame()提示视频输入缓存为空,请问您解决了吗?

ding3543

0个粉丝

5

问答

0

专栏

0

资料

ding3543 2015-11-24 15:23:05
认可0
你好,我用的是hi3516a,但是我也遇到一样的情况。3516a是利用VI虚拟通道17来获取raw data,但是我运行HI_MPI_VI_GetFrame()提示视频输入缓存为空,请问您怎么解决的?

nj_zbl

0个粉丝

1

问答

0

专栏

0

资料

nj_zbl 2015-12-11 11:08:24
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=15216&ptid=4035]小锐锐 发表于 2015-4-15 14:49[/url]
请教下楼主,我调用HI_MPI_VI_GetFrame()都不成功.代码如下:
                HI_S32 i = 0;
                for (i = 0; i < pstPara- ...[/quote]

你的问题解决了吗?HI_MPI_VI_GetFrame()接口需在通道已启用后才有效。我可以获取一帧数据,但是不能连续获取。从第二帧开始获取的照片全白。请你指教

rootmain

0个粉丝

2

问答

0

专栏

0

资料

rootmain 2016-04-01 15:24:52
认可0
我抓到的图像偏红,能解决吗
加载中···
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

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

Markdown 语法

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

举报类型

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

详细说明

易百纳技术社区