openvx_tutorial
openvx_tutorial copied to clipboard
ERROR: agoVerifyGraph: kernel org.khronos.openvx.magnitude: invalid format for argument#2
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