/************************************************************************************************************ Function to Register the Kernel for Publish *************************************************************************************************************/ vx_status CV_transpose_Register(vx_context context) { vx_status status = VX_SUCCESS; vx_kernel kernel = vxAddKernel(context, "org.opencv.transpose", VX_KERNEL_OPENCV_TRANSPOSE, CV_transpose_Kernel, 2, CV_transpose_InputValidator, CV_transpose_OutputValidator, nullptr, nullptr); if (kernel) { PARAM_ERROR_CHECK(vxAddParameterToKernel(kernel, 0, VX_INPUT, VX_TYPE_IMAGE, VX_PARAMETER_STATE_REQUIRED)); PARAM_ERROR_CHECK(vxAddParameterToKernel(kernel, 1, VX_OUTPUT, VX_TYPE_IMAGE, VX_PARAMETER_STATE_REQUIRED)); PARAM_ERROR_CHECK(vxFinalizeKernel(kernel)); } if (status != VX_SUCCESS) { exit: vxRemoveKernel(kernel); return VX_FAILURE; } return status; }
/************************************************************************************************************ Function to Register the Kernel for Publish *************************************************************************************************************/ vx_status CV_sepFilter2D_Register(vx_context context) { vx_status status = VX_SUCCESS; vx_kernel kernel = vxAddKernel(context, "org.opencv.sepfilter2d", VX_KERNEL_EXT_CV_SEPFILTER_2D, CV_sepFilter2D_Kernel, 9, CV_sepFilter2D_InputValidator, CV_sepFilter2D_OutputValidator, nullptr, nullptr); if (kernel) { PARAM_ERROR_CHECK(vxAddParameterToKernel(kernel, 0, VX_INPUT, VX_TYPE_IMAGE, VX_PARAMETER_STATE_REQUIRED)); PARAM_ERROR_CHECK(vxAddParameterToKernel(kernel, 1, VX_OUTPUT, VX_TYPE_IMAGE, VX_PARAMETER_STATE_REQUIRED)); PARAM_ERROR_CHECK(vxAddParameterToKernel(kernel, 2, VX_INPUT, VX_TYPE_SCALAR, VX_PARAMETER_STATE_REQUIRED)); PARAM_ERROR_CHECK(vxAddParameterToKernel(kernel, 3, VX_INPUT, VX_TYPE_MATRIX, VX_PARAMETER_STATE_REQUIRED)); PARAM_ERROR_CHECK(vxAddParameterToKernel(kernel, 4, VX_INPUT, VX_TYPE_MATRIX, VX_PARAMETER_STATE_REQUIRED)); PARAM_ERROR_CHECK(vxAddParameterToKernel(kernel, 5, VX_INPUT, VX_TYPE_SCALAR, VX_PARAMETER_STATE_REQUIRED)); PARAM_ERROR_CHECK(vxAddParameterToKernel(kernel, 6, VX_INPUT, VX_TYPE_SCALAR, VX_PARAMETER_STATE_REQUIRED)); PARAM_ERROR_CHECK(vxAddParameterToKernel(kernel, 7, VX_INPUT, VX_TYPE_SCALAR, VX_PARAMETER_STATE_REQUIRED)); PARAM_ERROR_CHECK(vxAddParameterToKernel(kernel, 8, VX_INPUT, VX_TYPE_SCALAR, VX_PARAMETER_STATE_REQUIRED)); PARAM_ERROR_CHECK(vxFinalizeKernel(kernel)); } if (status != VX_SUCCESS) { exit: vxRemoveKernel(kernel); return VX_FAILURE; } return status; }
/************************************************************************************************************ Function to Register the Kernel for Publish *************************************************************************************************************/ vx_status CV_SURF_compute_Register(vx_context context) { vx_status status = VX_SUCCESS; vx_kernel Kernel = vxAddKernel(context, "org.opencv.surf_compute", VX_KERNEL_OPENCV_SURF_COMPUTE, CV_SURF_Compute_Kernel, 9, CV_SURF_Compute_InputValidator, CV_SURF_Compute_OutputValidator, nullptr, nullptr); if (Kernel) { PARAM_ERROR_CHECK(vxAddParameterToKernel(Kernel, 0, VX_INPUT, VX_TYPE_IMAGE, VX_PARAMETER_STATE_REQUIRED)); PARAM_ERROR_CHECK(vxAddParameterToKernel(Kernel, 1, VX_INPUT, VX_TYPE_IMAGE, VX_PARAMETER_STATE_REQUIRED)); PARAM_ERROR_CHECK(vxAddParameterToKernel(Kernel, 2, VX_BIDIRECTIONAL, VX_TYPE_ARRAY, VX_PARAMETER_STATE_REQUIRED)); PARAM_ERROR_CHECK(vxAddParameterToKernel(Kernel, 3, VX_BIDIRECTIONAL, VX_TYPE_ARRAY, VX_PARAMETER_STATE_REQUIRED)); PARAM_ERROR_CHECK(vxAddParameterToKernel(Kernel, 4, VX_INPUT, VX_TYPE_SCALAR, VX_PARAMETER_STATE_REQUIRED)); PARAM_ERROR_CHECK(vxAddParameterToKernel(Kernel, 5, VX_INPUT, VX_TYPE_SCALAR, VX_PARAMETER_STATE_REQUIRED)); PARAM_ERROR_CHECK(vxAddParameterToKernel(Kernel, 6, VX_INPUT, VX_TYPE_SCALAR, VX_PARAMETER_STATE_REQUIRED)); PARAM_ERROR_CHECK(vxAddParameterToKernel(Kernel, 7, VX_INPUT, VX_TYPE_SCALAR, VX_PARAMETER_STATE_REQUIRED)); PARAM_ERROR_CHECK(vxAddParameterToKernel(Kernel, 8, VX_INPUT, VX_TYPE_SCALAR, VX_PARAMETER_STATE_REQUIRED)); PARAM_ERROR_CHECK(vxFinalizeKernel(Kernel)); } if (status != VX_SUCCESS) { exit: vxRemoveKernel(Kernel); return VX_FAILURE; } return status; }
/************************************************************************************************************ Function to Register the Kernel for Publish *************************************************************************************************************/ vx_status CV_norm_Register(vx_context context) { vx_status status = VX_SUCCESS; vx_kernel kernel = vxAddKernel(context, "org.opencv.norm", VX_KERNEL_EXT_CV_NORM, CV_norm_Kernel, 3, CV_norm_InputValidator, CV_norm_OutputValidator, nullptr, nullptr); if (kernel) { PARAM_ERROR_CHECK(vxAddParameterToKernel(kernel, 0, VX_INPUT, VX_TYPE_IMAGE, VX_PARAMETER_STATE_REQUIRED)); PARAM_ERROR_CHECK(vxAddParameterToKernel(kernel, 1, VX_BIDIRECTIONAL, VX_TYPE_SCALAR, VX_PARAMETER_STATE_REQUIRED)); PARAM_ERROR_CHECK(vxAddParameterToKernel(kernel, 2, VX_INPUT, VX_TYPE_SCALAR, VX_PARAMETER_STATE_REQUIRED)); PARAM_ERROR_CHECK(vxFinalizeKernel(kernel)); } if (status != VX_SUCCESS) { exit: vxRemoveKernel(kernel); return VX_FAILURE; } return status; }
/************************************************************************************************************ Function to Register the Kernel for Publish *************************************************************************************************************/ vx_status CV_fastNlMeansDenoisingColored_Register(vx_context context) { vx_status status = VX_SUCCESS; vx_kernel Kernel = vxAddKernel(context, "org.opencv.fastnlmeansdenoisingcolored", VX_KERNEL_OPENCV_FAST_NL_MEANS_DENOISING_COLORED, CV_fastNlMeansDenoisingColored_Kernel, 6, CV_fastNlMeansDenoisingColored_InputValidator, CV_fastNlMeansDenoisingColored_OutputValidator, nullptr, nullptr); if (Kernel) { PARAM_ERROR_CHECK(vxAddParameterToKernel(Kernel, 0, VX_INPUT, VX_TYPE_IMAGE, VX_PARAMETER_STATE_REQUIRED)); PARAM_ERROR_CHECK(vxAddParameterToKernel(Kernel, 1, VX_OUTPUT, VX_TYPE_IMAGE, VX_PARAMETER_STATE_REQUIRED)); PARAM_ERROR_CHECK(vxAddParameterToKernel(Kernel, 2, VX_INPUT, VX_TYPE_SCALAR, VX_PARAMETER_STATE_REQUIRED)); PARAM_ERROR_CHECK(vxAddParameterToKernel(Kernel, 3, VX_INPUT, VX_TYPE_SCALAR, VX_PARAMETER_STATE_REQUIRED)); PARAM_ERROR_CHECK(vxAddParameterToKernel(Kernel, 4, VX_INPUT, VX_TYPE_SCALAR, VX_PARAMETER_STATE_REQUIRED)); PARAM_ERROR_CHECK(vxAddParameterToKernel(Kernel, 5, VX_INPUT, VX_TYPE_SCALAR, VX_PARAMETER_STATE_REQUIRED)); PARAM_ERROR_CHECK(vxFinalizeKernel(Kernel)); } if (status != VX_SUCCESS) { exit: vxRemoveKernel(Kernel); return VX_FAILURE; } return status; }
/************************************************************************************************************ Function to Register the Kernel for Publish *************************************************************************************************************/ vx_status CV_warpPerspective_Register(vx_context context) { vx_status status = VX_SUCCESS; vx_kernel Kernel = vxAddKernel(context, "org.opencv.warpperspective", VX_KERNEL_OPENCV_WARP_PERSPECTIVE, CV_warpPerspective_Kernel, 7, CV_warpPerspective_InputValidator, CV_warpPerspective_OutputValidator, nullptr, nullptr); if (Kernel) { PARAM_ERROR_CHECK(vxAddParameterToKernel(Kernel, 0, VX_INPUT, VX_TYPE_IMAGE, VX_PARAMETER_STATE_REQUIRED)); PARAM_ERROR_CHECK(vxAddParameterToKernel(Kernel, 1, VX_OUTPUT, VX_TYPE_IMAGE, VX_PARAMETER_STATE_REQUIRED)); PARAM_ERROR_CHECK(vxAddParameterToKernel(Kernel, 2, VX_INPUT, VX_TYPE_MATRIX, VX_PARAMETER_STATE_REQUIRED)); PARAM_ERROR_CHECK(vxAddParameterToKernel(Kernel, 3, VX_INPUT, VX_TYPE_SCALAR, VX_PARAMETER_STATE_REQUIRED)); PARAM_ERROR_CHECK(vxAddParameterToKernel(Kernel, 4, VX_INPUT, VX_TYPE_SCALAR, VX_PARAMETER_STATE_REQUIRED)); PARAM_ERROR_CHECK(vxAddParameterToKernel(Kernel, 5, VX_INPUT, VX_TYPE_SCALAR, VX_PARAMETER_STATE_REQUIRED)); PARAM_ERROR_CHECK(vxAddParameterToKernel(Kernel, 6, VX_INPUT, VX_TYPE_SCALAR, VX_PARAMETER_STATE_REQUIRED)); PARAM_ERROR_CHECK(vxFinalizeKernel(Kernel)); } if (status != VX_SUCCESS) { exit: vxRemoveKernel(Kernel); return VX_FAILURE; } return status; }
/*! \brief The entry point into this module to add the base kernels to OpenVX. * \param context The handle to the implementation context. * \return vx_status Returns errors if some or all kernels were not added * correctly. * \ingroup group_implementation */ /*VX_API_ENTRY*/ vx_status VX_API_CALL vxPublishKernels(vx_context context) { vx_status status = VX_FAILURE; vx_uint32 p = 0, k = 0; for (k = 0; k < num_kernels; k++) { vx_kernel kernel = vxAddKernel(context, kernels[k]->name, kernels[k]->enumeration, kernels[k]->function, kernels[k]->numParams, kernels[k]->input_validate, kernels[k]->output_validate, kernels[k]->initialize, kernels[k]->deinitialize); if (kernel) { status = VX_SUCCESS; // temporary for (p = 0; p < kernels[k]->numParams; p++) { status = vxAddParameterToKernel(kernel, p, kernels[k]->parameters[p].direction, kernels[k]->parameters[p].data_type, kernels[k]->parameters[p].state); if (status != VX_SUCCESS) { vxAddLogEntry((vx_reference)context, status, "Failed to add parameter %d to kernel %s! (%d)\n", p, kernels[k]->name, status); break; } } if (status == VX_SUCCESS) { status = vxFinalizeKernel(kernel); if (status != VX_SUCCESS) { vxAddLogEntry((vx_reference)context, status, "Failed to finalize kernel[%u]=%s\n",k, kernels[k]->name); } } else { status = vxRemoveKernel(kernel); if (status != VX_SUCCESS) { vxAddLogEntry((vx_reference)context, status, "Failed to remove kernel[%u]=%s\n",k, kernels[k]->name); } } } else { vxAddLogEntry((vx_reference)context, status, "Failed to add kernel %s\n", kernels[k]->name); } } return status; }