This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Custom Application using OpenVX, Node kernel Validate failed

I have 2 nodes, i execute them but i got message " Node kernel Validate failed".

I found that statust change his value ( it is not more VX_SUCCESS) when it calculates num_params in vx_node.c in ownNodeKernelValidate

vx_status ownNodeKernelValidate(vx_node node, vx_meta_format meta[])
{
    vx_status status = VX_SUCCESS;
    uint32_t i;
    uint32_t num_params;
    if((NULL != node) && (NULL != node->kernel))
    {
        if(node->kernel->validate)
        {
            /* the type of the parameter is known by the system, so let the  system set it by default. */
          num_params = node->kernel->signature.num_parameters;      
            for (i = 0; i < num_params; i ++)
            {
                meta[i]->type = node->kernel->signature.types[i];            
            }
            status = node->kernel->validate(node, node->parameters, num_params, meta);                         
        }     
    }
    else
    {    
        status = VX_ERROR_INVALID_PARAMETERS;     
    }

    return status;
}

can anyone help me to solve this problem?

  • Basically the number of parameters passed to the node is not matching the number of parameters expected by the kernel. Can you double check what you are passing?

    Regards,
    Shyam

  • I created struct with graph objects

    typedef struct
    {
        vx_graph        graph;
        vx_image        img;
        vx_image        out_image;
        vx_image        intermediate;
        vx_node         node;
        vx_node         node2;          
    } AlgorithmLink_GraphObj;
    

    i used vxCreateImage and vxCreateVirtualImage 

     gObj->img          = vxCreateImage(pObj->context, inChInfo->width,inChInfo->height, VX_DF_IMAGE_RGB );
     gObj->intermediate = vxCreateVirtualImage(gObj->graph, 1280, 720 , VX_DF_IMAGE_IYUV );
     gObj->out_image = vxCreateImage(pObj->context, 1280, 720, VX_DF_IMAGE_IYUV );
    

    after that i used 2 node functions

     gObj->node   = vxColorConvertNode (gObj->graph, gObj->img,gObj->intermediate);
     gObj-> node2 = vxChannelExtractNode (gObj->graph, gObj->intermediate,VX_CHANNEL_Y,gObj->out_image);

    at the end i used 

     vxStatus = vxVerifyGraph(gObj->graph);
                if (VX_SUCCESS != vxStatus)
                {
                    status = SYSTEM_LINK_STATUS_EFAIL;
                    break;
                }

    and here it starts making problems

  • By the way, I forgot to mention that i am using VIsion SDK 03_03_00_00 on TDA2XX chip and I started from your example for Harris corners detection

  • Hello,

    It looks like the out_image should be of type "VX_DF_IMAGE_U8" rather than "VX_DF_IMAGE_IYUV".  Since the input to the vxChannelExtractNode is a IYUV image and you are extracting the Y channel, this extracted Y channel will now be represented as a U8 image.  If you make this modification, do you still see this error?

    Regards,

    Lucas