OpenCV 4.0 and 4.1 - what's new?



    We return to the story of the open source computer vision library OpenCV . The project lives and develops, driven by a team of developers working at Intel, as well as enduring community support. At the end of 2018, the first stable release from the 4.x branch was released, and just a month ago a new update was released - version 4.1. We asked the authors of the library to list briefly what new these two versions brought to the OpenCV functionality.

    Opencv 4.0


    The release of OpenCV 4.0 completed the life cycle of version 3.x - to fix errors and minor improvements, a 3.4 branch was created, from which minor 3.4.x versions will be created already (similar to 2.4.x).

    Opencv 4.0 final

    • OpenCV is now a C ++ 11 library and requires a C ++ 11-compatible compiler;
    • Many functions of the obsolete C API (from OpenCV 1.0) have been removed, old constants and function declarations have been moved to separate header files ( imgproc_c.h ) and should now be explicitly enabled by the user ( #include);
    • All CUDA modules have been ported to the opencv_contrib repository ;
    • Persistence API for writing and reading data to a file was rewritten in C ++, old functions have been removed;
    • A new G-API module has been added, which allows you to build graphs from operations on images and apply various optimizations to them;
    • Added support for the Deep Learning Deployment Toolkit (including opensource versions ) to the dnn module , including the use of Intel Movidius Neural Compute Stick or Intel Neural Compute Stick 2 on Raspberri Pi 3 ;
    • Support for networks in the ONNX (Open Neural Network Exchange) format has been added to the dnn module ;
    • Added experimental support for calculations via Vulkan to the dnn module ;
    • Implementation of the real-time algorithm for processing 3D scenes / models of KinectFusion (with optimization for CPU and GPU / OpenCL) has been added ;
    • Support for detecting and decoding QR codes (the decoder uses the QUirc library) has been added to the objdetect module - this summer, as part of the summer internship, work will be done to improve the quality and, possibly, the mode of simultaneous detection-decoding of more than one QR code in the image will be added .;
    • A very efficient and at the same time high-precision DIS optical stream algorithm was transferred from opencv_contrib to the video module of the main repository.

    Opencv 4.1


    • Added dispatch optimized implementations of many algorithms in the core and imgproc modules ;
    • Improvements in the dnn module :
      • Implemented support for launching networks on the Intel Neural Compute Stick 2 (using DLDT);
      • Reduced maximum memory consumption, introduced support for many new networks from TensorFlow
    • Videoio module adds support for Android Media NDK API for reading video files / streams on Android devices from C ++ code (useful for testing algorithms);
    • A new module for analyzing image quality ( opencv_contrib / quality ) has been added . It implements both basic algorithms (PSNR, SSIM) and new specialized algorithms (like the quality assessment algorithm without using the original BRISQUE images - Blind / Referenceless Image Spatial Quality Evaluator);
    • Implemented several new algorithms: Robust local optical flow, Quasi Dense Stereo, camera calibration attached to the manipulator (Hand-Eye);

    More information about the library can be found on the project site, which has changed beyond recognition .

    The number of patches from 4.0.0 to 4.1.0: 462 (about 5.3 patches per day, excluding weekends and holidays). There are many changes, as you see, and they are significant. If you have questions about the embedded functionality, or, conversely, the non-implemented one, welcome to comments, OpenCV developers will try to answer them.

    Also popular now: