Using the Vitis vision Library¶
This section describes using the Vitis vision library in the Vitis development environment.
Note: The instructions in this section assume that you have downloaded and installed all the required packages.
include folder constitutes all the necessary components to build a Computer Vision or Image Processing pipeline using the library. The folders common and core contain the infrastructure that the library functions need for basic functions, Mat class, and macros. The library functions are categorized into 4 folders, features, video, dnn, and imgproc based on the operation they perform. The names of the folders are self-explanatory.
To work with the library functions, you need to include the path to the the include folder in the Vitis project. You can include relevant header files for the library functions you will be working with after you source the include folder’s path to the compiler. For example, if you would like to work with Harris Corner Detector and Bilateral Filter, you must use the following lines in the host code:
#include “features/xf_harris.hpp” //for Harris Corner Detector
#include “imgproc/xf_bilateral_filter.hpp” //for Bilateral Filter
#include “video/xf_kalmanfilter.hpp”
After the headers are included, you can work with the library functions as described in the Vitis vision Library API Reference using the examples in the examples folder as reference.
The following table gives the name of the header file, including the folder name, which contains the library function.
Function Name | File Path in the include folder |
---|---|
xf::cv::accumulate | imgproc/xf_accumulate_image.hpp |
xf::cv::accumulateSquare | imgproc/xf_accumulate_squared.hpp |
xf::cv::accumulateWeighted | imgproc/xf_accumulate_weighted.hp p |
xf::cv::absdiff, xf::cv::add, xf::cv::subtract, xf::cv::bitwise_and, xf::cv::bitwise_or, xf::cv::bitwise_not, xf::cv::bitwise_xor,xf::cv::multiply ,xf::cv::Max, xf::cv::Min,xf::cv::compare, xf::cv::zero, xf::cv::addS, xf::cv::SubS, xf::cv::SubRS ,xf::cv::compareS, xf::cv::MaxS, xf::cv::MinS, xf::cv::set | core/xf_arithm.hpp |
xf::cv::addWeighted | imgproc/xf_add_weighted.hpp |
xf::cv::autowhitebalance | imgproc/xf_autowhitebalance.hpp |
xf::cv::bilateralFilter | imgproc/xf_histogram.hpp |
xf::cv::boxFilter | imgproc/xf_box_filter.hpp |
xf::cv::boundingbox | imgproc/xf_boundingbox.hpp |
xf::cv::badpixelcorrection | imgproc/xf_bpc.hpp |
xf::cv::Canny | imgproc/xf_canny.hpp |
xf::cv::Colordetect | imgproc/xf_colorthresholding.hpp, imgproc/xf_bgr2hsv.hpp, imgproc/xf_erosion.hpp, imgproc/xf_dilation.hpp |
xf::cv::merge | imgproc/xf_channel_combine.hpp |
xf::cv::extractChannel | imgproc/xf_channel_extract.hpp |
xf::cv::convertTo | imgproc/xf_convert_bitdepth.hpp |
xf::cv::crop | imgproc/xf_crop.hpp |
xf::cv::filter2D | imgproc/xf_custom_convolution.hpp |
xf::cv::nv122iyuv, xf::cv::nv122rgba, xf::cv::nv122yuv4, xf::cv::nv212iyuv, xf::cv::nv212rgba, xf::cv::nv212yuv4, xf::cv::rgba2yuv4, xf::cv::rgba2iyuv, xf::cv::rgba2nv12, xf::cv::rgba2nv21, xf::cv::uyvy2iyuv, xf::cv::uyvy2nv12, xf::cv::uyvy2rgba, xf::cv::yuyv2iyuv, xf::cv::yuyv2nv12, xf::cv::yuyv2rgba, xf::cv::rgb2iyuv,xf::cv::rgb2nv12, xf::cv::rgb2nv21, xf::cv::rgb2yuv4, xf::cv::rgb2uyvy, xf::cv::rgb2yuyv, xf::cv::rgb2bgr, xf::cv::bgr2uyvy, xf::cv::bgr2yuyv, xf::cv::bgr2rgb, xf::cv::bgr2nv12, xf::cv::bgr2nv21, xf::cv::iyuv2nv12, xf::cv::iyuv2rgba, xf::cv::iyuv2rgb, xf::cv::iyuv2yuv4, xf::cv::nv122uyvy, xf::cv::nv122yuyv, xf::cv::nv122nv21, xf::cv::nv212rgb, xf::cv::nv212bgr, xf::cv::nv212uyvy, xf::cv::nv212yuyv, xf::cv::nv212nv12, xf::cv::uyvy2rgb, xf::cv::uyvy2bgr, xf::cv::uyvy2yuyv, xf::cv::yuyv2rgb, xf::cv::yuyv2bgr, xf::cv::yuyv2uyvy, xf::cv::rgb2gray, xf::cv::bgr2gray, xf::cv::gray2rgb, xf::cv::gray2bgr, xf::cv::rgb2xyz, xf::cv::bgr2xyz… | imgproc/xf_cvt_color.hpp |
xf::cv::dilate | imgproc/xf_dilation.hpp |
xf::cv::demosaicing | imgproc/xf_demosaicing.hpp |
xf::cv::erode | imgproc/xf_erosion.hpp |
xf::cv::fast | features/xf_fast.hpp |
xf::cv::GaussianBlur | imgproc/xf_gaussian_filter.hpp |
xf::cv::gaincontrol | imgproc/xf_gaincontrol.hpp |
xf::cv::gammacorrection | imgproc/xf_gammacorrection |
xf::cv::cornerHarris | features/xf_harris.hpp |
xf::cv::calcHist | imgproc/xf_histogram.hpp |
xf::cv::equalizeHist | imgproc/xf_hist_equalize.hpp |
xf::cv::HOGDescriptor | imgproc/xf_hog_descriptor.hpp |
xf::cv::Houghlines | imgproc/xf_houghlines.hpp |
xf::cv::inRange | imgproc/xf_inrange.hpp |
xf::cv::integralImage | imgproc/xf_integral_image.hpp |
xf::cv::densePyrOpticalFlow | video/xf_pyr_dense_optical_flow.h pp |
xf::cv::DenseNonPyrLKOpticalFlow | video/xf_dense_npyr_optical_flow. hpp |
xf::cv::LUT | imgproc/xf_lut.hpp |
xf::cv::KalmanFilter | video/xf_kalmanfilter.hpp |
xf::cv::magnitude | core/xf_magnitude.hpp |
xf::cv::MeanShift | imgproc/xf_mean_shift.hpp |
xf::cv::meanStdDev | core/xf_mean_stddev.hpp |
xf::cv::medianBlur | imgproc/xf_median_blur.hpp |
xf::cv::minMaxLoc | core/xf_min_max_loc.hpp |
xf::cv::OtsuThreshold | imgproc/xf_otsuthreshold.hpp |
xf::cv::phase | core/xf_phase.hpp |
xf::cv::preProcess | dnn/xf_pre_process.hpp |
xf::cv::paintmask | imgproc/xf_paintmask.hpp |
xf::cv::pyrDown | imgproc/xf_pyr_down.hpp |
xf::cv::pyrUp | imgproc/xf_pyr_up.hpp |
xf::cv::reduce | imgrpoc/xf_reduce.hpp |
xf::cv::remap | imgproc/xf_remap.hpp |
xf::cv::resize | imgproc/xf_resize.hpp |
xf::cv::convertScaleAbs | imgproc/xf_convertscaleabs.hpp |
xf::cv::Scharr | imgproc/xf_scharr.hpp |
xf::cv::SemiGlobalBM | imgproc/xf_sgbm.hpp |
xf::cv::Sobel | imgproc/xf_sobel.hpp |
xf::cv::StereoPipeline | imgproc/xf_stereo_pipeline.hpp |
xf::cv::sum | imgproc/xf_sum.hpp |
xf::cv::StereoBM | imgproc/xf_stereoBM.hpp |
xf::cv::SVM | imgproc/xf_svm.hpp |
xf::cv::Threshold | imgproc/xf_threshold.hpp |
xf::cv::warpTransform | imgproc/xf_warp_transform.hpp |
Changing the Hardware Kernel Configuration¶
Update the <path to vitis vision git folder>/vision/L1/examples/<function>/build/xf_config_params.h file.
Using the Vitis vision Library Functions on Hardware¶
The following table lists the Vitis vision library functions and the command to run the respective examples on hardware. It is assumed that your design is completely built and the board has booted up correctly.
Example | Function Name | Usage on Hardware |
---|---|---|
accumulate | xf::cv::accumulate | ./<executable name>.elf <path to input image 1> <path to input image 2> |
accumulatesq uared | xf::cv::accumulateSquare | ./<executable name>.elf <path to input image 1> <path to input image 2> |
accumulatewe ighted | xf::cv::accumulateWeighted | ./<executable name>.elf <path to input image 1> <path to input image 2> |
addS | xf::cv::addS | ./<executable name>.elf <path to input image> |
arithm | xf::cv::absdiff, xf::cv::subtract, xf::cv::bitwise_and, xf::cv::bitwise_or, xf::cv::bitwise_not, xf::cv::bitwise_xor | ./<executable name>.elf <path to input image 1> <path to input image 2> |
addweighted | xf::cv::addWeighted | ./<executable name>.elf <path to input image 1> <path to input image 2> |
Autowhite balance | xf::cv::autowhitebalance | ./<executable name>.elf <path to input image> |
Bilateralfil ter | xf::cv::bilateralFilter | ./<executable name>.elf <path to input image> |
Boxfilter | xf::cv::boxFilter | ./<executable name>.elf <path to input image> |
Badpixelcorr ection | xf::cv::badpixelcorrection | ./<executable name>.elf <path to input image> |
Boundingbox | xf::cv::boundingbox | ./<executable name>.elf <path to input image> <No of ROI’s> |
Canny | xf::cv::Canny | ./<executable name>.elf <path to input image> |
channelcombi ne | xf::cv::merge | ./<executable name>.elf <path to input image 1> <path to input image 2> <path to input image 3> <path to input image 4> |
Channelextra ct | xf::cv::extractChannel | ./<executable name>.elf <path to input image> |
Colordetect | xf::cv::bgr2hsv, xf::cv::colorthresholding, xf::cv:: erode, xf::cv:: dilate | ./<executable name>.elf <path to input image> |
compare | xf::cv::compare | ./<executable name>.elf <path to input image 1> <path to input image 2> |
compareS | xf::cv::compareS | ./<executable name>.elf <path to input image> |
Convertbitde pth | xf::cv::convertTo | ./<executable name>.elf <path to input image> |
convertScale Abs | xf::cv::convertScaleAbs | ./<executable name>.elf <path to input image> |
Cornertracke r | xf::cv::cornerTracker | ./exe <input video> <no. of frames> <Harris Threshold> <No. of frames after which Harris Corners are Reset> |
crop | xf::cv::crop | ./<executable name>.elf <path to input image> |
Customconv | xf::cv::filter2D | ./<executable name>.elf <path to input image> |
cvtcolor IYUV2NV12 | xf::cv::iyuv2nv12 | ./<executable name>.elf <path to input image 1> <path to input image 2> <path to input image 3> |
cvtcolor IYUV2RGBA | xf::cv::iyuv2rgba | ./<executable name>.elf <path to input image 1> <path to input image 2> <path to input image 3> |
cvtcolor IYUV2YUV4 | xf::cv::iyuv2yuv4 | ./<executable name>.elf <path to input image 1> <path to input image 2> <path to input image 3> <path to input image 4> <path to input image 5> <path to input image 6> |
cvtcolor NV122IYUV | xf::cv::nv122iyuv | ./<executable name>.elf <path to input image 1> <path to input image 2> |
cvtcolor NV122RGBA | xf::cv::nv122rgba | ./<executable name>.elf <path to input image 1> <path to input image 2> |
cvtcolor NV122YUV4 | xf::cv::nv122yuv4 | ./<executable name>.elf <path to input image 1> <path to input image 2> |
cvtcolor NV212IYUV | xf::cv::nv212iyuv | ./<executable name>.elf <path to input image 1> <path to input image 2> |
cvtcolor NV212RGBA | xf::cv::nv212rgba | ./<executable name>.elf <path to input image 1> <path to input image 2> |
cvtcolor NV212YUV4 | xf::cv::nv212yuv4 | ./<executable name>.elf <path to input image 1> <path to input image 2> |
cvtcolor RGBA2YUV4 | xf::cv::rgba2yuv4 | ./<executable name>.elf <path to input image> |
cvtcolor RGBA2IYUV | xf::cv::rgba2iyuv | ./<executable name>.elf <path to input image> |
cvtcolor RGBA2NV12 | xf::cv::rgba2nv12 | ./<executable name>.elf <path to input image> |
cvtcolor RGBA2NV21 | xf::cv::rgba2nv21 | ./<executable name>.elf <path to input image> |
cvtcolor UYVY2IYUV | xf::cv::uyvy2iyuv | ./<executable name>.elf <path to input image> |
cvtcolor UYVY2NV12 | xf::cv::uyvy2nv12 | ./<executable name>.elf <path to input image> |
cvtcolor UYVY2RGBA | xf::cv::uyvy2rgba | ./<executable name>.elf <path to input image> |
cvtcolor YUYV2IYUV | xf::cv::yuyv2iyuv | ./<executable name>.elf <path to input image> |
cvtcolor YUYV2NV12 | xf::cv::yuyv2nv12 | ./<executable name>.elf <path to input image> |
cvtcolor YUYV2RGBA | xf::cv::yuyv2rgba | ./<executable name>.elf <path to input image> |
Demosaicing | xf::cv::demosaicing | ./<executable name>.elf <path to input image> |
Difference of Gaussian | xf::cv::GaussianBlur, xf::cv::duplicateMat, and xf::cv::subtract | ./<exe-name>.elf <path to input image> |
Dilation | xf::cv::dilate | ./<executable name>.elf <path to input image> |
Erosion | xf::cv::erode | ./<executable name>.elf <path to input image> |
Fast | xf::cv::fast | ./<executable name>.elf <path to input image> |
Gaussianfilt er | xf::cv::GaussianBlur | ./<executable name>.elf <path to input image> |
Gaincontrol | xf::cv::gaincontrol | ./<executable name>.elf <path to input image> |
Gammacorrec tion | xf::cv::gammacorrection | ./<executable name>.elf <path to input image> |
Harris | xf::cv::cornerHarris | ./<executable name>.elf <path to input image> |
Histogram | xf::cv::calcHist | ./<executable name>.elf <path to input image> |
Histequializ e | xf::cv::equalizeHist | ./<executable name>.elf <path to input image> |
Hog | xf::cv::HOGDescriptor | ./<executable name>.elf <path to input image> |
Houghlines | xf::cv::HoughLines | ./<executable name>.elf <path to input image> |
inRange | xf::cv::inRange | ./<executable name>.elf <path to input image> |
Integralimg | xf::cv::integralImage | ./<executable name>.elf <path to input image> |
Lkdensepyrof | xf::cv::densePyrOpticalFlo w | ./<executable name>.elf <path to input image 1> <path to input image 2> |
Lknpyroflow | xf::cv::DenseNonPyr LKOpticalFlow | ./<executable name>.elf <path to input image 1> <path to input image 2> |
Lut | xf::cv::LUT | ./<executable name>.elf <path to input image> |
Kalman Filter | xf::cv::KalmanFilter | ./<executable name>.elf |
Magnitude | xf::cv::magnitude | ./<executable name>.elf <path to input image> |
Max | xf::cv::Max | ./<executable name>.elf <path to input image 1> <path to input image 2> |
MaxS | xf::cv::MaxS | ./<executable name>.elf <path to input image> |
meanshifttra cking | xf::cv::MeanShift | ./<executable name>.elf <path to input video/input image files> <Number of objects to track> |
meanstddev | xf::cv::meanStdDev | ./<executable name>.elf <path to input image> |
medianblur | xf::cv::medianBlur | ./<executable name>.elf <path to input image> |
Min | xf::cv::Min | ./<executable name>.elf <path to input image 1> <path to input image 2> |
MinS | xf::cv::MinS | ./<executable name>.elf <path to input image> |
Minmaxloc | xf::cv::minMaxLoc | ./<executable name>.elf <path to input image> |
otsuthreshol d | xf::cv::OtsuThreshold | ./<executable name>.elf <path to input image> |
paintmask | xf::cv::paintmask | ./<executable name>.elf <path to input image> |
Phase | xf::cv::phase | ./<executable name>.elf <path to input image> |
Pyrdown | xf::cv::pyrDown | ./<executable name>.elf <path to input image> |
Pyrup | xf::cv::pyrUp | ./<executable name>.elf <path to input image> |
reduce | xf::cv::reduce | ./<executable name>.elf <path to input image> |
remap | xf::cv::remap | ./<executable name>.elf <path to input image> <path to mapx data> <path to mapy data> |
Resize | xf::cv::resize | ./<executable name>.elf <path to input image> |
scharrfilter | xf::cv::Scharr | ./<executable name>.elf <path to input image> |
set | xf::cv::set | ./<executable name>.elf <path to input image> |
SemiGlobalBM | xf::cv::SemiGlobalBM | ./<executable name>.elf <path to left image> <path to right image> |
sobelfilter | xf::cv::Sobel | ./<executable name>.elf <path to input image> |
stereopipeli ne | xf::cv::StereoPipeline | ./<executable name>.elf <path to left image> <path to right image> |
stereolbm | xf::cv::StereoBM | ./<executable name>.elf <path to left image> <path to right image> |
subRS | xf::cv::SubRS | ./<executable name>.elf <path to input image> |
subS | xf::cv::SubS | ./<executable name>.elf <path to input image> |
sum | xf::cv::sum | ./<executable name>.elf <path to input image 1> <path to input image 2> |
Svm | xf::cv::SVM | ./<executable name>.elf |
threshold | xf::cv::Threshold | ./<executable name>.elf <path to input image> |
warptransfor m | xf::cv::warpTransform | ./<executable name>.elf <path to input image> |
zero | xf::cv::zero | ./<executable name>.elf <path to input image> |