七星海棠

七星海棠

1个粉丝

29

问答

0

专栏

1

资料

七星海棠  发布于  2017-06-13 15:22:09
采纳率 0%
29个问答
5269

Hi3536 图像裁剪

 

     大家好,
            在手册里看到hi3536具有裁剪功能,测试了下,调用HI_MPI_VPSS_SetGrpCrop接口,并没有实现预期效果,是调用上有什么问题吗?

else if('4' == ch)
{
           VPSS_CROP_INFO_S stCropInfo;
            VPSS_GRP VpssGrp = 2;

            s32Ret = HI_MPI_VPSS_GetGrpCrop(VpssGrp, &stCropInfo);
            if(s32Ret != HI_SUCCESS)
            {
                SAMPLE_PRT("failed with %#x!\n", s32Ret);
                return s32Ret;
            }
            
            stCropInfo.bEnable = 1;
            stCropInfo.enCropCoordinate = VPSS_CROP_ABS_COOR;
            stCropInfo.stCropRect.s32X = 0;
            stCropInfo.stCropRect.s32Y = 0;
            stCropInfo.stCropRect.u32Width = 960;
            stCropInfo.stCropRect.u32Height = 540;
            s32Ret = HI_MPI_VPSS_SetGrpCrop(VpssGrp, &stCropInfo);
            if(s32Ret != HI_SUCCESS)
            {
                SAMPLE_PRT("failed with %#x!\n", s32Ret);
                return s32Ret;
            }
我来回答
回答13个
时间排序
认可量排序

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2017-06-13 17:28:55
认可0
预期是什么效果,实际代码是什么效果?

七星海棠

1个粉丝

29

问答

0

专栏

1

资料

七星海棠 2017-06-13 17:32:37
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=52806&ptid=16885]zhuangweiye 发表于 2017-6-13 17:28[/url]
预期是什么效果,实际代码是什么效果?[/quote]

你好,
     我现在是输出一个1080p的视频图像,想裁剪后只输出从(0,0)到(960, 540)的图像
     现在调这个接口后,还是输出的完整的1080p图像,裁剪没效果

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2017-06-15 10:21:54
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=52807&ptid=16885]七星海棠 发表于 2017-6-13 17:32[/url]
你好,
     我现在是输出一个1080p的视频图像,想裁剪后只输出从(0,0)到(960, 540)的图像
    ...[/quote]


楼主是否vo channel的大小是1080P, 如果vo channel是1080P,那么vpss-〉vo再用上面的代码,看到的现象是vo输出是1080P的图,但是仔细看图的位置,可以发现这是原图的1/4放大而来

所以如果真的只做裁剪,那么除了要用上面的代码,还要把vo channel也设到960x540

七星海棠

1个粉丝

29

问答

0

专栏

1

资料

七星海棠 2017-06-15 11:39:05
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=52933&ptid=16885]zhuangweiye 发表于 2017-6-15 10:21[/url]
楼主是否vo channel的大小是1080P, 如果vo channel是1080P,那么vpss-〉vo再用上面的代码,看到的现象 ...[/quote]

你好,
         我仔细看图的位置了,并没有进行裁剪,仍然是原图,将vo channel也设成960x540了仍然是原图,只是将原图缩放成960x540大小了,并没有进行裁剪。
         我因为是动态的在做这个裁剪,上面直接调不行,我又将Grp销毁了,想再重建,但在重建的时候报错
        [SAMPLE_VO_Virtual_HD0]-3555: HI_MPI_VPSS_CreateGrp failed with a0078003
         下面是我这块的代码:
else if('4' == ch)
        {
            VPSS_GRP_ATTR_S stGrpVpssAttr;
            VPSS_CHN_ATTR_S stChnAttr;
            VPSS_CROP_INFO_S stCropInfo;
            VPSS_GRP VpssGrp = 2;

            s32Ret = HI_MPI_VPSS_StopGrp(VpssGrp);
            if (s32Ret != HI_SUCCESS)
            {
                SAMPLE_PRT("failed with %#x!\n", s32Ret);
                return HI_FAILURE;
            }

            s32Ret = HI_MPI_VPSS_DisableChn(VpssGrp, 0);
            if (s32Ret != HI_SUCCESS)
            {
                SAMPLE_PRT("failed with %#x!\n", s32Ret);
                return HI_FAILURE;
            }

            
            s32Ret = HI_MPI_VPSS_DestroyGrp(VpssGrp);
            if (s32Ret != HI_SUCCESS)
            {
                SAMPLE_PRT("failed with %#x!\n", s32Ret);
                return HI_FAILURE;
            }

            stGrpAttr.u32MaxW = 1920;
            stGrpAttr.u32MaxH = 1080;
            stGrpAttr.enPixFmt = PIXEL_FORMAT_YUV_SEMIPLANAR_420;
            
            stGrpAttr.bIeEn = HI_FALSE;
            stGrpAttr.bNrEn = HI_TRUE;
            stGrpAttr.bDciEn = HI_FALSE;
            stGrpAttr.bHistEn = HI_FALSE;
            stGrpAttr.bEsEn = HI_TRUE;//HI_FALSE;
            stGrpAttr.enDieMode = VPSS_DIE_MODE_NODIE;
            s32Ret = HI_MPI_VPSS_CreateGrp(VpssGrp, &stGrpVpssAttr);
            if(s32Ret != HI_SUCCESS)
            {
                SAMPLE_PRT("HI_MPI_VPSS_CreateGrp failed with %x\n",s32Ret);
                return HI_FAILURE;
            }

            s32Ret = HI_MPI_VPSS_GetGrpAttr(VpssGrp, &stGrpVpssAttr);
            if(s32Ret != HI_SUCCESS)
            {
                SAMPLE_PRT("HI_MPI_VPSS_GetGrpAttr failed with %x\n",s32Ret);
                return HI_FAILURE;
            }

            stGrpVpssAttr.bDciEn = HI_TRUE;
            stGrpVpssAttr.bNrEn = HI_TRUE;
            s32Ret = HI_MPI_VPSS_SetGrpAttr(VpssGrp, &stGrpVpssAttr);
            if(s32Ret != HI_SUCCESS)
            {
                SAMPLE_PRT("HI_MPI_VPSS_SetGrpAttr failed with %x\n",s32Ret);
                return HI_FAILURE;
            }
           
            
            s32Ret = HI_MPI_VPSS_GetGrpCrop(VpssGrp, &stCropInfo);
            if(s32Ret != HI_SUCCESS)
            {
                SAMPLE_PRT("HI_MPI_VPSS_GetGrpCrop failed with %#x!\n", s32Ret);
                return s32Ret;
            }
            
            stCropInfo.bEnable = 1;
            stCropInfo.enCropCoordinate = VPSS_CROP_ABS_COOR;
            stCropInfo.stCropRect.s32X = 0;
            stCropInfo.stCropRect.s32Y = 0;
            stCropInfo.stCropRect.u32Width = 960;
            stCropInfo.stCropRect.u32Height = 540;
            s32Ret = HI_MPI_VPSS_SetGrpCrop(VpssGrp, &stCropInfo);
            if(s32Ret != HI_SUCCESS)
            {
                SAMPLE_PRT("HI_MPI_VPSS_SetGrpCrop failed with %#x!\n", s32Ret);
                return s32Ret;
            }

            s32Ret = HI_MPI_VPSS_GetChnAttr(VpssGrp, 0, &stChnAttr);
            if(s32Ret != HI_SUCCESS)
            {
                SAMPLE_PRT("HI_MPI_VPSS_GetChnAttr failed with %#x!\n", s32Ret);
                return s32Ret;
            }

            stChnAttr.bUVInvert = 0;
            stChnAttr.bSpEn = 1;
            s32Ret = HI_MPI_VPSS_SetChnAttr(VpssGrp, 0,&stChnAttr);
            if(s32Ret != HI_SUCCESS)
            {
                 SAMPLE_PRT("HI_MPI_VPSS_SetChnAttr failed with %#x!\n", s32Ret);
                 return s32Ret;
            }

            s32Ret = HI_MPI_VPSS_EnableChn(VpssGrp, 0);
            if(s32Ret != HI_SUCCESS)
            {
                 SAMPLE_PRT("HI_MPI_VPSS_SetChnAttr failed with %#x!\n", s32Ret);
                 return s32Ret;
            }

            s32Ret = HI_MPI_VPSS_StartGrp (VpssGrp);
            if(s32Ret != HI_SUCCESS)
            {
                 SAMPLE_PRT("HI_MPI_VPSS_StartGrp failed with %#x!\n", s32Ret);
                 return s32Ret;
            }

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2017-06-15 11:51:14
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=52942&ptid=16885]七星海棠 发表于 2017-6-15 11:39[/url]
你好,
         我仔细看图的位置了,并没有进行裁剪,仍然是原图,将vo channel也设成960x540了仍然是 ...[/quote]

那只能看代码了, 这个crop用了很多年也没有问题

七星海棠

1个粉丝

29

问答

0

专栏

1

资料

七星海棠 2017-06-15 11:57:06
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=52943&ptid=16885]zhuangweiye 发表于 2017-6-15 11:51[/url]
那只能看代码了, 这个crop用了很多年也没有问题[/quote]


   你好,
        我的处理流程是vdec -> virtvo -> vpss -> vo,会不会是跟这个虚拟vo有关啊?

qn1566994447

0个粉丝

2

问答

0

专栏

0

资料

qn1566994447 2019-12-05 16:11:16
认可0
碰到同样问题,无解哦,

qn1582609407

0个粉丝

4

问答

0

专栏

0

资料

qn1582609407 2020-06-29 17:38:03
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=52933&ptid=16885]zhuangweiye 发表于 2017-6-15 10:21[/url]
楼主是否vo channel的大小是1080P, 如果vo channel是1080P,那么vpss-〉vo再用上面的代码,看到的现象 ...[/quote]

您好,请问3536的vpss裁剪做了宽高不小于64的限制,有没有其他办法可以实现不限大小的裁剪?

qn1582609407

0个粉丝

4

问答

0

专栏

0

资料

qn1582609407 2020-06-29 17:47:20
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=52933&ptid=16885]zhuangweiye 发表于 2017-6-15 10:21[/url]
楼主是否vo channel的大小是1080P, 如果vo channel是1080P,那么vpss-〉vo再用上面的代码,看到的现象 ...[/quote]

我的使用场景是使用3536做解码,想实现多层叠加后输出到显示屏上,但看到3536的浮窗只有一层,无法满足多层的需求。于是想到用vpss做切割拼接把多个通道的数据显示到一个视频层上,实现一个假的视频层概念,但是vpss有处理大小限制,所以想问一下有没有其他的方式实现裁剪

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2020-06-30 07:37:55
认可0
本帖最后由 zhuangweiye 于 2020-6-30 07:39 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=160290&ptid=16885]qn1582609407 发表于 2020-6-29 17:47[/url]
我的使用场景是使用3536做解码,想实现多层叠加后输出到显示屏上,但看到3536的浮窗只有一层,无法满足多 ...[/quote]



可以试试把 vo 设置成VO_PART_MODE_SINGLE模式, 类似SD的情况, 直接就能多通道叠加, 缺点是会用到VGS, VPSS也只能用user mode

qn1582609407

0个粉丝

4

问答

0

专栏

0

资料

qn1582609407 2020-07-21 18:11:53
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=160297&ptid=16885]zhuangweiye 发表于 2020-6-30 07:37[/url]
可以试试把 vo 设置成VO_PART_MODE_SINGLE模式, 类似SD的情况, 直接就能多通道叠加, 缺点是会用到V ...[/quote]

谢谢您,经过尝试可以实现多通道叠加显示,最多叠加层数在4个以上,可以满足需求

qn1546939847

0个粉丝

0

问答

0

专栏

0

资料

qn1546939847 2019-07-12 11:00:51
认可0
学习一下

liang

1个粉丝

0

问答

0

专栏

0

资料

liang 2023-08-26 18:55:19
认可0

我按grp进行设置会出错,而且按chn进行设置则正常,如果hi_mpi_vpss_set_grp_crop出错,可以试下hi_mpi_vpss_set_chn_crop

或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

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

Markdown 语法

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

举报类型

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

详细说明

易百纳技术社区