Я преобразовал следующий код OpenVX Sobel на график. Но достигнутые результаты совпадают.Прямой код OpenVx и графики, не дающие аналогичных результатов
Непосредственный код работает нормально, он дает правильный результат. В то время как графовый код занимает больше времени, чем непосредственный код для одного изображения, и приводит к неправильным результатам.
Так верно ли мое преобразование?
Немедленный Код:
/* Intermediate images. */
vx_image dx = vxCreateImage(context, width, height, VX_DF_IMAGE_S16);
vx_image dy = vxCreateImage(context, width, height, VX_DF_IMAGE_S16);
vx_image mag = vxCreateImage(context, width, height, VX_DF_IMAGE_S16);
/* Perform Sobel convolution. */
if (vxuSobel3x3(context,image,dx, dy)!=VX_SUCCESS)
{
printf("ERROR: failed to do sobel!\n");
}
/* Calculate magnitude from gradients. */
if (vxuMagnitude(context,dx,dy,mag)!=VX_SUCCESS)
{
printf("ERROR: failed to do magnitude!\n");
}
//Convert result back to U8 image.
if (vxuConvertDepth(context,mag,image,VX_CONVERT_POLICY_WRAP,0)!=VX_SUCCESS)
{
printf("ERROR: failed to do color convert!\n");
}
Graph код на основе приведенной выше кода немедленного
vx_graph graph = vxCreateGraph(context);
vx_image intermediate1 = vxCreateVirtualImage(graph, width, height, VX_DF_IMAGE_S16);
vx_image intermediate2 = vxCreateVirtualImage(graph, width, height, VX_DF_IMAGE_S16);
vx_image intermediate3 = vxCreateVirtualImage(graph, width, height, VX_DF_IMAGE_S16);
if(vxSobel3x3Node(graph,image,intermediate1,intermediate2) == 0)
{
printf("FAILED TO Create 1 graph node");
}
if(vxMagnitudeNode(graph,intermediate1,intermediate2,intermediate3) == 0)
{
printf("ERROR: failed to do magnitude!\n");
}
if(vxConvertDepthNode(graph,intermediate3,image,VX_CONVERT_POLICY_WRAP,0) == 0)
{
printf("ERROR failed to do color convert");
}
vxVerifyGraph(graph);
vxProcessGraph(graph); // run in a loop
исправлено. также я пытался отобразить вывод из виртуального образа. Так исправлено это тоже. Но время, затрачиваемое на обработку графика, как указано выше, больше, чем время, затрачиваемое на гауссовскую пирамиду opencv gpu на том же уровне. Отдельный вопрос: http://stackoverflow.com/questions/36548336/why-is-opencv-gpu-module-performing-faster-than-visionworks –