OpenCV
More actions
| OpenCV | |
|---|---|
| Information | |
| Type | Computer vision library |
| Industry | Computer vision |
| Developer | OpenCV.org (Open Source Vision Foundation) and open-source contributors; originally Intel |
| Written In | C++ |
| Operating System | Windows, Linux, macOS, Android, iOS |
| License | Apache License 2.0 (version 4.5.0 and later); BSD license (earlier releases and the 3.x series) |
| Release Date | June 2000 (first public release) |
| Website | https://opencv.org |
OpenCV (Open Source Computer Vision Library) is an open-source library of computer vision and machine learning functions, written natively in C++ with bindings for Python, Java and other languages. OpenCV.org describes it as containing more than 2,500 optimized algorithms and lists, among its uses, the ability to "track camera movements", "produce 3D point clouds from stereo cameras" and "establish markers to overlay it with augmented reality". The project is operated by the non-profit Open Source Vision Foundation and has been distributed under the Apache 2 license since version 4.5.0.[1][2]
The library began as an Intel research project in the late 1990s and was first shown publicly at the CVPR 2000 conference.[3] Its uses in augmented reality and virtual reality work include camera calibration and lens distortion correction, detection of square fiducial markers such as ArUco, and Perspective-n-Point pose estimation through its solvePnP function.[4] Microsoft's HoloLens research samples, the Monado OpenXR runtime and the artoolkitX SDK derived from ARToolKit all use it.[5][6][7]
As of October 2026 the project maintains two stable branches. OpenCV 5.0.0, the first release of a new major version, was published on 6 June 2026, and OpenCV 4.14.0 followed on the 4.x branch on 19 July 2026.[8][9][10]
History
Intel origins
According to the project's own timeline, Intel employee Gary Bradski came up with the idea for a computer vision library in 1998 and formed a development team inside Intel, with Vadim Pisarevsky becoming technical lead. The original plan was a closed-source product called CVL ("Computer Vision Library"). On Bradski's recommendation Intel open-sourced the code instead, and he chose the name "OpenCV" with the OpenGL graphics API in mind.[3] The library was unveiled at the CVPR 2000 conference in Hilton Head Island, South Carolina, in June 2000, which OpenCV.org counts as its first public release.[3][1] The project asks researchers who use OpenCV to cite Bradski's 2000 article "The OpenCV Library" in Dr. Dobb's Journal of Software Tools.[11]
The project's timeline also says the OpenCV team was part of the group that won the 2005 DARPA Grand Challenge for autonomous ground vehicles. Version 1.0 was released in October 2006. It was implemented in C and included image processing, computational geometry, face detection, camera calibration, Lucas-Kanade optical flow and several classical machine learning methods.[3]
Willow Garage, Itseez and the move to GitHub
After 2008 development moved to two companies: the robotics research lab Willow Garage and the computer vision firm Itseez. Bradski, Pisarevsky and Viktor Erukhimov continued work on the library there. OpenCV 2.0 (2009-2010) made C++ the primary language and introduced automatically generated Python bindings. Android support and then iOS support followed in 2012.[3] The same year the project moved from Subversion to GitHub and launched the opencv.org site; the GitHub repository was created in July 2012.[3][12]
OpenCV 3.0 shipped in June 2015 and added T-API, a transparent OpenCL acceleration layer.[3][2] The 3.1 release in December 2015 collected that year's Google Summer of Code projects, among them "Chessboard+ArUco for camera calibration" in the opencv_contrib aruco module (credited to Sergio Garrido, Prasanna and Gary Bradski) and a structure-from-motion module.[2]
Return to Intel and OpenCV.org
In May 2016 Intel acquired Itseez for an undisclosed price. VentureBeat reported that Itseez was "a key contributor to computer vision standards initiatives including OpenCV and OpenVX".[13] OpenCV.org's timeline says Itseez engineers were the library's core development team, so the acquisition brought development back to Intel. The same timeline records a deep neural network (DNN) module and a JavaScript interface in late 2016, and says that from 2019 the core team consisted of distributed groups at Intel, OpenCV China and xperience.ai.[3]
OpenCV 4.0 was released in November 2018. It required a C++11 compiler and removed much of the old OpenCV 1.x C API.[2] Starting with 4.5.0 in October 2020, the license changed from BSD to Apache 2; the 3.x series kept the BSD license.[2] The 2026 OpenCV 5 announcement names OpenCV.org as the non-profit steward of the library, with development and support from Big Vision, OpenCV China and OpenCV.ai.[14]
OpenCV 5
An alpha of OpenCV 5.0 appeared in December 2024 as a technology preview "not ready for production usage yet".[15] OpenCV.org announced the final release in a blog post dated 4 June 2026, and the 5.0.0 release was published on GitHub two days later.[14][8] OpenCV 5 requires C++17 and Python 3.6 or later. It removes the remaining C API and OpenVX support and moves the classic ML module, the Graph API and the Haar and HOG object detectors to the separate opencv_contrib repository.[10] It also introduces a new DNN inference engine that coexists with the classic one. OpenCV.org states that ONNX operator coverage rose from roughly 13% in 4.x to over 64% in OpenCV 5 (the announcement as first published in June 2026 gave about 22% and over 80%), and that the new engine can run large language and vision-language models inside the DNN module.[14][10]
Features
OpenCV is organized into modules. In the 4.x branch these include core, imgproc (image processing), calib3d (camera calibration and 3D reconstruction), features2d, objdetect, video, videoio, dnn, ml, photo, stitching and the JavaScript and Objective-C bindings. Further experimental and specialized modules are kept in the separate opencv_contrib repository.[16][10]
Camera calibration
Calibration estimates a camera's intrinsic parameters (focal lengths and optical center, collected in the "camera matrix") and its lens distortion. OpenCV's standard model uses radial coefficients k1, k2 and k3 and tangential coefficients p1 and p2, giving five distortion parameters, and the calibration tutorial supports a classical black-white chessboard as well as symmetrical and asymmetrical circle patterns.[17] A separate fisheye camera model handles wide-angle lenses.[18] In OpenCV 5 the calibration functions moved to a dedicated calib module, which adds multi-camera calibration (calibrateMultiview, described by OpenCV.org as N-camera bundle adjustment) for rigs of pinhole cameras, fisheye cameras or a mix of both.[14][10]
Pose estimation
solvePnP computes the pose of a known object, a rotation and a translation, from correspondences between its 3D points and their 2D projections in a calibrated image. The 4.x header lists several solvers: an iterative Levenberg-Marquardt refinement, EPnP, P3P, AP3P, IPPE, IPPE_SQUARE and SQPnP. IPPE_SQUARE is documented as "a special case suitable for marker pose estimation", and the DLS and UPnP options are marked as broken implementations that fall back to EPnP.[18] EPnP, the method by Vincent Lepetit, Francesc Moreno-Noguer and Pascal Fua, was published in the International Journal of Computer Vision in 2009.[19] OpenCV 5 moves solvePnP, findHomography and related geometry functions into a new geometry module without changing their signatures.[20]
The tutorial "Real Time pose estimation of a textured object" opens by calling camera pose estimation "the most elemental problem in augmented reality". It builds a six-degrees-of-freedom tracker from ORB features, descriptor matching, PnP with RANSAC and a linear Kalman filter that rejects bad poses.[21]
ArUco and other fiducial markers
OpenCV's marker module is based on the ArUco library for square fiducial markers, developed by Rafael Muñoz and Sergio Garrido.[4] Its developers, the Applications of Artificial Vision (AVA) research group at the University of Córdoba in Spain, describe ArUco as "a minimal library for Augmented Reality applications based on OpenCV".[22] The marker system was described in the 2014 Pattern Recognition paper "Automatic generation and detection of highly reliable fiducial markers under occlusion" by S. Garrido-Jurado, R. Muñoz-Salinas, F.J. Madrid-Cuevas and M.J. Marín-Jiménez.[23] The OpenCV tutorial explains that one square marker gives four corner correspondences, enough to recover the camera pose, and that its inner binary code allows error detection and correction. It names robot navigation and augmented reality as applications of this kind of pose estimation.[4]
Marker support lived in the opencv_contrib aruco module until OpenCV 4.7.0 (December 2022), which added ArUco markers, AprilTags, ChArUco boards and diamond markers, including their detection and calibration, to the main objdetect module.[2] The predefined dictionaries in the 4.x branch range from 4x4-bit to 7x7-bit ArUco sets, plus the original ArUco dictionary, four AprilTag families (16h5, 25h9, 36h10 and 36h11) and the ArUco MIP 36h12 dictionary.[24] After detecting markers, applications get the camera pose relative to each marker from solvePnP. ArUco boards give one pose from a set of markers, which allows some of the markers to be occluded.[4]
3D vision and point clouds
OpenCV 5 split the former calib3d module into four modules: geometry, calib, stereo (depth from stereo correspondence) and ptcloud. The ptcloud module takes over functionality that was partly in the contrib rgbd module, including visual odometry and TSDF volume integration.[10][25][20] OpenCV.org lists loading and saving of point clouds and meshes in OBJ and PLY formats, dense RGB-D fusion with TSDF volumes, and RANSAC plane and sphere fitting, and calls the changes a meaningful upgrade for structure from motion, robotics and reconstruction work.[14]
XR applications
Microsoft HoloLens research
Microsoft launched HoloLensForCV at CVPR 2017 to help researchers use the Microsoft HoloLens as a computer vision and robotics research device. Its ComputeOnDevice sample is a holographic Universal Windows Platform app that obtains camera calibration and images from the headset, processes them with OpenCV and shows the results on the HoloLens.[26] For HoloLens 2, the HoloLens2ForCV repository's CameraWithCVAndCalibration app "uses OpenCV to detect arUco markers in the two frontal gray-scale cameras and triangulate the detections" through the Research Mode API.[5] The 2020 Microsoft technical report on HoloLens 2 Research Mode by Dorin Ungureanu and colleagues describes the same sample.[27]
Open-source XR software
In the build configuration of Monado, the open-source OpenXR runtime, OpenCV is an optional dependency. Monado's Mercury hand tracking module and its SLAM tracking support can only be enabled when the OpenCV backend is available, and the build script accepts both the OpenCV 4 module names (calib3d, features2d) and the OpenCV 5 names (calib, features).[6]
artoolkitX 1.0, the first release of the artoolkitX SDK, is dated 26 March 2018 in the project's release notes. It added a new 2D texture tracker "developed by the project team and using OpenCV primitives" alongside the square-marker and NFT trackers taken from ARToolKit v5.[7] Later artoolkitX releases updated the bundled OpenCV builds on Android, iOS and Windows.[7]
Visual SLAM research systems also depend on it. ORB-SLAM3, published in IEEE Transactions on Robotics in 2021, uses OpenCV "to manipulate images and features" and requires at least version 3.0.[28]
Game engines and headsets
OpenCV for Unity, a paid Unity Asset Store extension from Enox Software, brings OpenCV to the Unity engine.[29] Developer Takashi Yoshinaga's open-source QuestArUcoMarkerTracking project uses it with the Passthrough Camera Access component of the Meta XR SDK. The project detects and tracks single and multiple ArUco markers and ChArUco markers on the Meta Quest 3 and Meta Quest 3S for passthrough augmented reality.[30]
Release history
| Version | Date | Notable changes | Source |
|---|---|---|---|
| First public release | June 2000 | Unveiled at CVPR 2000 | [3] |
| 1.0 | October 2006 | C implementation; camera calibration, face detection, Lucas-Kanade optical flow | [3] |
| 2.0 | 2009-2010 | C++ becomes the primary language; generated Python bindings | [3] |
| 3.0 | June 2015 | T-API OpenCL acceleration | [2][3] |
| 3.1 | December 2015 | Google Summer of Code results, including ArUco calibration in opencv_contrib | [2] |
| 4.0 | November 2018 | C++11 required; much of the C API removed | [2] |
| 4.5.0 | October 2020 | License changed from BSD to Apache 2 | [2] |
| 4.7.0 | December 2022 | ArUco, AprilTag and ChArUco support added to objdetect | [2] |
| 5.0.0-alpha | 5 December 2024 | Technology preview of the 5.x series | [15] |
| 5.0.0 | 6 June 2026 | C++17 required; C API removed; calib3d split; new DNN engine | [8][10] |
| 4.14.0 | 19 July 2026 | Latest 4.x release as of October 2026 | [9] |
See also
References
- ↑ 1.0 1.1 "About". OpenCV. OpenCV.org. https://opencv.org/about/. Retrieved 2026-10-06.
- ↑ 2.00 2.01 2.02 2.03 2.04 2.05 2.06 2.07 2.08 2.09 2.10 "OpenCV Change Logs v2.2-v4.10". opencv/opencv wiki, GitHub. https://github.com/opencv/opencv/wiki/OpenCV-Change-Logs-v2.2%E2%80%90v4.10. Retrieved 2026-10-06.
- ↑ 3.00 3.01 3.02 3.03 3.04 3.05 3.06 3.07 3.08 3.09 3.10 3.11 "Anniversary". OpenCV. OpenCV.org. https://opencv.org/anniversary/. Retrieved 2026-10-06.
- ↑ 4.0 4.1 4.2 4.3 Sergio Garrido, Alexander Panov. "Detection of ArUco Markers (tutorial source)". OpenCV documentation, GitHub. https://github.com/opencv/opencv/blob/4.x/doc/tutorials/objdetect/aruco_detection/aruco_detection.markdown. Retrieved 2026-10-06.
- ↑ 5.0 5.1 "HoloLens2ForCV samples". Microsoft, GitHub. https://github.com/microsoft/HoloLens2ForCV. Retrieved 2026-10-06.
- ↑ 6.0 6.1 "monado/CMakeLists.txt". freedesktop.org GitLab. https://gitlab.freedesktop.org/monado/monado/-/blob/main/CMakeLists.txt. Retrieved 2026-10-06.
- ↑ 7.0 7.1 7.2 "artoolkitX Release Notes". artoolkitX repository, GitHub. https://github.com/artoolkitx/artoolkitx/blob/master/Release%20Notes.md. Retrieved 2026-10-06.
- ↑ 8.0 8.1 8.2 "OpenCV 5.0.0". opencv/opencv releases, GitHub. 2026-06-06. https://github.com/opencv/opencv/releases/tag/5.0.0. Retrieved 2026-10-06.
- ↑ 9.0 9.1 "OpenCV 4.14.0". opencv/opencv releases, GitHub. 2026-07-19. https://github.com/opencv/opencv/releases/tag/4.14.0. Retrieved 2026-10-06.
- ↑ 10.0 10.1 10.2 10.3 10.4 10.5 10.6 "OpenCV 5". opencv/opencv wiki, GitHub. https://github.com/opencv/opencv/wiki/OpenCV-5. Retrieved 2026-10-06.
- ↑ "CiteOpenCV". opencv/opencv wiki, GitHub. https://github.com/opencv/opencv/wiki/CiteOpenCV. Retrieved 2026-10-06.
- ↑ "opencv/opencv: Open Source Computer Vision Library". GitHub. https://github.com/opencv/opencv. Retrieved 2026-10-06.
- ↑ Dean Takahashi (2016-05-26). "Intel acquires computer vision startup Itseez for Internet of Things and self-driving cars". VentureBeat. https://venturebeat.com/entrepreneur/intel-acquires-computer-vision-startup-itseez-for-internet-of-things-and-self-driving-cars/. Retrieved 2026-10-06.
- ↑ 14.0 14.1 14.2 14.3 14.4 OpenCV Team (2026-06-04). "OpenCV 5 Is Here: The Biggest Leap in Years for Computer Vision". OpenCV. OpenCV.org. https://opencv.org/opencv-5/. Retrieved 2026-10-06.
- ↑ 15.0 15.1 "OpenCV 5.0.0-alpha". opencv/opencv releases, GitHub. 2024-12-05. https://github.com/opencv/opencv/releases/tag/5.0.0-alpha. Retrieved 2026-10-06.
- ↑ "opencv/modules at 4.14.0". GitHub. https://github.com/opencv/opencv/tree/4.14.0/modules. Retrieved 2026-10-06.
- ↑ Bernát Gábor. "Camera calibration With OpenCV (tutorial source)". OpenCV documentation, GitHub. https://github.com/opencv/opencv/blob/4.x/doc/tutorials/calib3d/camera_calibration/camera_calibration.markdown. Retrieved 2026-10-06.
- ↑ 18.0 18.1 "calib3d.hpp". opencv/opencv repository, GitHub. https://github.com/opencv/opencv/blob/4.x/modules/calib3d/include/opencv2/calib3d.hpp. Retrieved 2026-10-06.
- ↑ Vincent Lepetit, Francesc Moreno-Noguer, Pascal Fua (2009-02). "EPnP: An Accurate O(n) Solution to the PnP Problem". International Journal of Computer Vision, vol. 81, no. 2, pp. 155-166. https://doi.org/10.1007/s11263-008-0152-6. Retrieved 2026-10-06.
- ↑ 20.0 20.1 "OpenCV 4.x to 5.x migration guide". opencv/opencv wiki, GitHub. https://github.com/opencv/opencv/wiki/OpenCV-4-to-5-migration. Retrieved 2026-10-06.
- ↑ Edgar Riba. "Real Time pose estimation of a textured object (tutorial source)". OpenCV documentation, GitHub. https://github.com/opencv/opencv/blob/4.x/doc/tutorials/calib3d/real_time_pose/real_time_pose.markdown. Retrieved 2026-10-06.
- ↑ "ArUco". Aplicaciones de la Visión Artificial (AVA), Universidad de Córdoba. https://www.uco.es/investiga/grupos/ava/portfolio/aruco/. Retrieved 2026-10-06.
- ↑ S. Garrido-Jurado, R. Muñoz-Salinas, F.J. Madrid-Cuevas, M.J. Marín-Jiménez (2014-06). "Automatic generation and detection of highly reliable fiducial markers under occlusion". Pattern Recognition, vol. 47, no. 6, pp. 2280-2292. https://doi.org/10.1016/j.patcog.2014.01.005. Retrieved 2026-10-06.
- ↑ "aruco_dictionary.hpp". opencv/opencv repository, GitHub. https://github.com/opencv/opencv/blob/4.x/modules/objdetect/include/opencv2/objdetect/aruco_dictionary.hpp. Retrieved 2026-10-06.
- ↑ "opencv/modules at 5.0.0". GitHub. https://github.com/opencv/opencv/tree/5.0.0/modules. Retrieved 2026-10-06.
- ↑ "HoloLensForCV samples". Microsoft, GitHub. https://github.com/microsoft/HoloLensForCV. Retrieved 2026-10-06.
- ↑ Dorin Ungureanu, Federica Bogo, Silvano Galliani, et al. (2020-08-25). "HoloLens 2 Research Mode as a Tool for Computer Vision Research". arXiv. https://arxiv.org/abs/2008.11239. Retrieved 2026-10-06.
- ↑ Carlos Campos, Richard Elvira, Juan J. Gómez Rodríguez, José M. M. Montiel, Juan D. Tardós. "ORB-SLAM3". UZ-SLAMLab, GitHub. https://github.com/UZ-SLAMLab/ORB_SLAM3. Retrieved 2026-10-06.
- ↑ "OpenCV for Unity". Unity Asset Store. Enox Software. https://assetstore.unity.com/packages/tools/integration/opencv-for-unity-21088. Retrieved 2026-10-06.
- ↑ Takashi Yoshinaga. "QuestArUcoMarkerTracking". GitHub. https://github.com/TakashiYoshinaga/QuestArUcoMarkerTracking. Retrieved 2026-10-06.