笔者安装opencv4.4.0时,看到教程上说
sudo cmake \
-D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local \
...
-D OPENCV_EXTRA_MODULES_PATH=/home/optic_css/opencv4.4.0/opencv_contrib-4.4.0/modules/ \
...
在这样进行之后当我编译
make -j8
sudo make install
会出现
make: *** No targets specified and no makefile found. Stop.
修改为
cmake \
-D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv \
-D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.4.0/modules/ \
..
之后再执行
make -j8
sudo make install
编译就成功
原因如下
OPENCV_EXTRA_MODULES_PATH=/home/optic_css/opencv- 4.4.0/opencv_contrib-4.4.0/modules/ \
就是这句,在cmake时告警找不到文件;
这句/home/optic_css这不是每个人计算机都一样,
虽然有教程说/opencv_contrib-4.4.0/modules/ 可以放在任何地方,但是cmakelist却没有很好的匹配
我们没有optic_css这个路径,所以就错了
我直接用当前路径的,上一级路../ 用相对路径绕过了这个问题
当前路径是/build
上级路径../opencv_contrib-4.4.0/modules/ \
但相对路径这种描述,系统是认可的
所以从严谨的角度和实用性的角度,相对路径就稳妥很多,在谁的机器上装都一样
到这里这个问题就解决了,
此外在安装时我还加了opencv的安装路径,因为在默认usr/local中include,lib,和,bin三个文件夹会和系统的其他文件夹混合在一起不易区分。所以添加以后opencv使用的lib就清晰了
具体来说就是在所有地方修改/usr/local/lib 为 /usr/local/opencv/lib
在local文件下下混有很多其他文件,增加opencv路径后就容易区分了,最简单用途,删除opencv就非常容易,把这个文件夹直接删除就可以了
opencv的完整安装过程可以参考opencv4.4.0安装