Ask Your Question

OpenCV has Two Branches?

asked 2018-04-04 11:21:53 -0500

rob-evans gravatar image

Excuse me for this noob question, but, after all, I am a noob to OpenCV. :-)

It appears that OpenCV has two branches: 2.x.x and 3.x.x. What are the differences?

edit retag flag offensive close merge delete



2.4.x is more a "maintainance" branch. no new functionality will ever get added there.

berak gravatar imageberak ( 2018-04-04 11:28:14 -0500 )edit

2 answers

Sort by ยป oldest newest most voted

answered 2018-04-04 14:23:28 -0500

There are 2 variants: OpenCV 2.x API, which is essentially a C++ API, as opposite to the C-based OpenCV 1.x API. The second uses prefix 'Cv', for example CvMat versus Mat. OpenCV 2.x library still uses elements of 1.x API via C++ wrappers. In OpenCV 3.x it was rewritten.

edit flag offensive delete link more

answered 2018-04-04 11:25:40 -0500

sjhalayka gravatar image

Go to the website and look in the News section. Each new version (say, v3.0) has a list of bug-fixes and new capabilities.

edit flag offensive delete link more


Instead of asking "What are the differences?", I think I should have asked "Why two branches, and how should I determine which one to use?".

rob-evans gravatar imagerob-evans ( 2018-04-04 11:31:38 -0500 )edit

Definitely 3.x, as it has the most functionality. What functionality are you looking to use? Which programming language are you using?

sjhalayka gravatar imagesjhalayka ( 2018-04-04 11:33:49 -0500 )edit

I am using C++ to create an add-in for Adobe Acrobat which requires compilation with VS 2013. OpenCV version 3.1.0 looks like the one that I need, but I am curious about the apparent two branches. For example, version 3.1.0 was released on 2015-12-18, but version 2.4.13 was released on 2016-04-20, and version was released on 2016-12-16. But, then, version 3.2.0 was released on 2016-12-23. I wonder what is the purpose of having the two branches. Why weren't they at some point consolidated into one branch?

rob-evans gravatar imagerob-evans ( 2018-04-04 12:25:01 -0500 )edit

@rob-evans : For application development, first consider the OS versions/distributions you are supporting the app on. Choose to implement toward an OpenCV version appropriate to your user base.

the 2.x.x.x branch is stable with no new functionality added, receiving only bugfix backports, to support long term support applications built with it. For example, Ubuntu 14.04 LTS is built using opencv 2.4.x.

Open CV 3 is a major version number bump, because there are major changes in base toolchain required, support of features, structural changes, and how performance improvements are detected and employed. 3.x may be used in long term support Linux distributions; ex: Ubuntu 17.10 is on OpenCV 3.1.

If you build OpenCV into your app, then you can really select any version you like.

opalmirror gravatar imageopalmirror ( 2018-04-04 14:48:10 -0500 )edit

Question Tools

1 follower


Asked: 2018-04-04 11:21:53 -0500

Seen: 235 times

Last updated: Apr 04 '18