RZA2M_DRP_Benchmark demo的后续进一步开发

目前我对这个demo的理解是,左右两个buffer分别用DRP和openCV处理,然后输出到屏幕的左右两边,同时输出二者占用时间(显然opencv耗时更长一些),不知道我的理解是否有误。

 

然后,我发现在sample_main函数中,提供了按键按下的“接口”,以及在其中的while循环中“do nothing”,想问一下,如果想要在目前二值化图像的基础上做进一步的处理,比如模板匹配、特征匹配,是不是在这个while函数里面调用drp或者opencv的库就可以了呢?(如果不是的话又要怎么操作?)然后调用这些库函数,传入参数是要用那些数组或者说哪个地方存储的数据是二值化之后的图像数据呢?

 

Parents
  • 你第一个方框里面的位置可以处理底板SW3按键的输入,方便和外部交互(参数变更,demo模式变更等)

    例如:

           /* Get key */

           key_status = key_status << 1 | PORTJ.PIDR.BIT.PIDR1;

           if ( ( key_status & KEY_CHECK_BIT) == KEY_JUST_ON )

           {

            p_param->benchmark_item++;

            if (p_param->benchmark_item == DBI_INVALID)

            {

                p_param->benchmark_item = DBI_BINARIZATION;

            }

           }

     

    第二个方框不需要做任何处理,需要等待MIPI有新的一帧输入,如果你需要扩展功能,将你的代码添加到下面红色函数里面

    PerformSetStartTime(IPP_BAYER_2_GRAY_TOTAL);
    r_drp_bayer2grayscale(p_param->input_bufadr, p_param->work_bufadr, R_BCD_CAMERA_WIDTH, R_BCD_CAMERA_HEIGHT);
    PerformSetEndTime(IPP_BAYER_2_GRAY_TOTAL);


    benchmark(p_param); //添加你的功能

    /* Clear the current capture state and enable the detection of the next capture completion */
    R_BCD_CameraClearCaptureStatus();

    /* update display data on the LCD screen */
    R_BCD_LcdClearGraphicsBuffer();

  • 了解了,谢谢您的解答。

    所以我现在是这么理解的,在benchmark函数里面可以进行后续的拓展实现,传入的参数p_param就是前面处理完得到的图像数据,我只需要紧接着拿这个p_param参数去进行后续处理就行了。

    然后现在对这个结构体有一点点不理解,input_bufadr和output_bufadr我能理解,应该是摄像头获取图像后存储的位置和输出到LCD的位置,(不知道理解得对不对),但是这个work_bufadr是什么作用我就不是很理解了,望指教。
  • 有些DRP的操作需要临时buffer存放数据计算过程中的临时数据,所以这个workbuffer的使用根据实际DRP库的需求来使用。应用有时候也不想让中间处理结果显示到屏幕,此时可以使用workbuffer作为中间处理环节的图像保存
Reply
  • 有些DRP的操作需要临时buffer存放数据计算过程中的临时数据,所以这个workbuffer的使用根据实际DRP库的需求来使用。应用有时候也不想让中间处理结果显示到屏幕,此时可以使用workbuffer作为中间处理环节的图像保存
Children
No Data