前言
ubuntu机器上以前装的是opencv343版本,后来又下载了opencv410版本并make 和make install后,输入下面查询opencv版本的命令,发现仍然是opencv3.4.3。
安装不同opencv版本步骤
后来经研究整理了一下安装不同opencv版本并共存的步骤:
1)cmake时为不同版本的opencv指定不同的库安装路径,否则以前版本会被覆盖掉。比方说
安装opencv410的命令: cmake xxx -D CMAKE_INSTALL_PREFIX=/usr/local/lib_opencv410 xxx
安装opencv343的命令:cmake xxx -D CMAKE_INSTALL_PREFIX=/usr/local xxx
2)cmake时要enable pkgconfig目录生成。在cmake-gui里面就是如下enable示意图
3) 在make以及make install后,如果上面安装目录不是/usr/local(比方说/usr/local/lib_opencv410),那么还需要手动指定PKG_CONFIG_PATH以便后续pkg-config命令生效。
vi ~/.bashrc
末尾添加下面一行,并且 source ~/.bashrc来使其添加生效。
后续补充:如果找不到新生成的pkgconfig目录,那么需要在configure opencv时来enable下面这个选项。
4)查询opencv版本 库以及头文件目录的三个命令来确保上面的opencv安装步骤都正常。
重点
真正的问题(也是重点)来了,即使按照上面步骤来正确安装了opencv410,然而执行pkg-config --modversion opencv命令,结果仍然是343. 后来发现,对于opencv4以上的版本要使用opencv4才能正确查询到其版本,库以及头文件目录的值。具体命令如下所示
pkg-config --modversion opencv4
pkg-config --cflags opencv4
pkg-config --libs opencv4
应用
当opencv3和opencv4在ubuntu上共存时,应用程序编译时可以根据需要 显性指定不同opencv版本的安装头文件以及库目录路径。
比如说,现在一个oencv应用程序(test_opencv.cpp)想要使用opencv410版本库,那么其编译命令如下:
顺便补充一句,当多个opencv3版本共存时,对于命令pkg-config --modversion opencv,同时生效的只能是一个版本。可以先用make uninstall先把旧的版本删除掉,然后再对新的版本使用make install。