I have a question regarding the DNN module namespace.
From my understanding, changes in minor version number and patch level version number indicate that the code and the library are backward compatible.
I modified the OPENCV_DLLVERSION, so that the libaries only having the OPENCV_VERSION_MAJOR number in their name. With this modification, I can run projects compiled with older OpenCV versions also with a newer version of the OpenCV libraries.
For other OpenCV modules like Core or Imgproc it’s working and they are backward compatible
But using the DNN module, I ran into some problems. I looked into the DNN code and saw, that there is a namespace with an individual name for every version of OpenCV - even if only patch level number increased (OPENCV_DNN_API_VERSION).
E.g. at OpenCV version 4.5.1 the DNN module has the namespace “dnn4_v20201117”, but at version 4.5.2 it is “dnn4_v20210301”. Therefore these versions of the DNN module aren’t compatible.
Is there a specific reason for this concept? Are there some incompatibilities between any DNN version?
For testing I renamed the namespace of the DNN module of version 4.5.1 to match the namespace of version 4.0.1 and compiled OpenCV. Then I took a simple DNN test project compiled with OpenCV version 4.0.1 and run it with the newly compiled OpenCV 4.5.1 libraries and it worked.
So would I run into trouble removing the version/date number from the DNN namespace?
Thank you very much!