Skip to content

ERROR: agoVerifyGraph: kernel org.khronos.openvx.magnitude: invalid format for argument#2 #35

Open
@SijinJohn

Description

@SijinJohn

I tried this code.

int main( int argc, char * argv[] )
{

const char * video_sequence = argv[1];
CGuiModule gui( video_sequence );

if( !gui.Grab() )
{
printf( "ERROR: input has no video\n" );
return 1;
}
vx_uint32 width = gui.GetWidth(); // image width
vx_uint32 height = gui.GetHeight(); // image height

vx_context context = vxCreateContext();
vx_graph graph = vxCreateGraph(context);
ERROR_CHECK_OBJECT( context );
ERROR_CHECK_OBJECT( graph );

vxRegisterLogCallback( context, log_callback, vx_false_e );
vxAddLogEntry( ( vx_reference ) context, VX_FAILURE, "Hello there!\n" );

vx_image images[] = {
vxCreateImage(context, width, height,VX_DF_IMAGE_UYVY),
vxCreateImage(context, width, height,VX_DF_IMAGE_U8),
vxCreateImage(context, width, height,VX_DF_IMAGE_U8),
};
for( vx_size i = 0; i < sizeof( images ) / sizeof( images[0] ); i++ )
{
ERROR_CHECK_OBJECT( images[i] );

}

//The code to create virtual images that connect nodes
vx_image virts[] = {
vxCreateVirtualImage(graph, width, height,VX_DF_IMAGE_VIRT),
vxCreateVirtualImage(graph, width, height,VX_DF_IMAGE_VIRT),
vxCreateVirtualImage(graph, width, height,VX_DF_IMAGE_VIRT),
vxCreateVirtualImage(graph, width, height,VX_DF_IMAGE_VIRT)
};

for( vx_size i = 0; i < sizeof( virts ) / sizeof( virts[0] ); i++ )
{

ERROR_CHECK_OBJECT( virts[i] );

}

vx_node channelExtract_node = vxChannelExtractNode(graph, images[0],VX_CHANNEL_Y, virts[0]);
vx_node Gaussian3x3_node = vxGaussian3x3Node(graph, virts[0], virts[1]) ;
vx_node Sobel3x3_node = vxSobel3x3Node (graph, virts[1], virts[2], virts[3]);
vx_node Magnitude_node = vxMagnitudeNode(graph, virts[2], virts[3], images[1]);
vx_node Phase_node = vxPhaseNode (graph, virts[2], virts[3], images[2]);

ERROR_CHECK_OBJECT( channelExtract_node );
ERROR_CHECK_OBJECT( Gaussian3x3_node );
ERROR_CHECK_OBJECT( Sobel3x3_node );
ERROR_CHECK_OBJECT( Magnitude_node );
ERROR_CHECK_OBJECT( Phase_node );

ERROR_CHECK_STATUS( vxReleaseNode( &channelExtract_node ) );
ERROR_CHECK_STATUS( vxReleaseNode( &Gaussian3x3_node ) );
ERROR_CHECK_STATUS( vxReleaseNode( &Sobel3x3_node ) );
ERROR_CHECK_STATUS( vxReleaseNode( &Magnitude_node ) );
ERROR_CHECK_STATUS( vxReleaseNode( &Phase_node ) );

////Verify the graph
ERROR_CHECK_STATUS( vxVerifyGraph (graph));

for( int frame_index = 0; !gui.AbortRequested(); frame_index++ )
{
vx_rectangle_t cv_rgb_image_region;
cv_rgb_image_region.start_x = 0;
cv_rgb_image_region.start_y = 0;
cv_rgb_image_region.end_x = width;
cv_rgb_image_region.end_y = height;

 vx_imagepatch_addressing_t cv_rgb_image_layout;
 cv_rgb_image_layout.stride_x   = 3;
 cv_rgb_image_layout.stride_y   = gui.GetStride();

 vx_uint8 * cv_rgb_image_buffer = gui.GetBuffer();
 ERROR_CHECK_STATUS( vxCopyImagePatch( images[0], &cv_rgb_image_region, 0,
                                       &cv_rgb_image_layout, cv_rgb_image_buffer,
                                       VX_WRITE_ONLY, VX_MEMORY_TYPE_HOST ) );

//Execute the graph synchronously
ERROR_CHECK_STATUS(vxProcessGraph(graph));
vx_rectangle_t rect = { 0, 0, width, height };
vx_map_id map_id;
vx_imagepatch_addressing_t addr;
void * ptr;
ERROR_CHECK_STATUS( vxMapImagePatch( images[1], &rect, 0, &map_id, &addr, &ptr,
                    VX_READ_ONLY, VX_MEMORY_TYPE_HOST, VX_NOGAP_X ) );
printf("Value of ptr array is %d", *(int*)ptr);
cv::Mat mat( height, width, CV_8U, ptr, addr.stride_y );

#if ENABLE_DISPLAY
cv::imshow( "Magnplot", mat );
#endif

gui.Show();
if( !gui.Grab() )
    {
        // Terminate the processing loop if the end of sequence is detected.
        gui.WaitForKey();
        break;
    }

}

vx_perf_t perfgraph = { 0 };
ERROR_CHECK_STATUS( vxQueryGraph( graph, VX_GRAPH_PERFORMANCE, &perfgraph, sizeof( perfgraph ) ) );
printf( "GraphName NumFrames Avg(ms) Min(ms)\n"
"Graph %9d %7.3f %7.3f\n",
( int )perfgraph.num, ( float )perfgraph.avg * 1e-6f, ( float )perfgraph.min * 1e-6f );

ERROR_CHECK_STATUS( vxReleaseGraph(&graph));
for( vx_size i = 0; i < sizeof( images ) / sizeof( images[0] ); i++ )
{
ERROR_CHECK_STATUS( vxReleaseImage( &images[i] ) );
}
ERROR_CHECK_STATUS( vxReleaseNode( &channelExtract_node ) );
ERROR_CHECK_STATUS( vxReleaseNode( &Gaussian3x3_node ) );
ERROR_CHECK_STATUS( vxReleaseNode( &Sobel3x3_node ) );
ERROR_CHECK_STATUS( vxReleaseNode( &Magnitude_node ) );
ERROR_CHECK_STATUS( vxReleaseNode( &Phase_node ) );

//ERROR_CHECK_STATUS( vxReleaseImage( &input_rgb_image ) );
ERROR_CHECK_STATUS( vxReleaseContext(&context));

return 0;

}

ERROR
OK: FILE ../../tutorial_videos/PETS09-S1-L1-View001.avi 768x480
LOG: [ status = -1 ] Hello there!

LOG: [ status = -14 ] ERROR: agoVerifyGraph: kernel org.khronos.openvx.magnitude: invalid format for argument#2

ERROR: failed with status = (-14) at /home/openvx/openvx_tutorial/tutorial_exercises/Acsia/Acsia.cpp#97

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions