完整从代码编译OpenCV在很多情况下是必须的。总体上来看,都是下载、编译、配置这三个过程,其中一些细节值得注意,记录如下。这里以ubuntu为例,其他发行版可能略有不同。
 
1、安装预置环境:
必须安装依赖的库
    
      sudo apt-get install build-essential
     
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
    
可以选择安装的
    
      sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
     
    
2、从github上下载相关代码:
2020年5月3日 当前最新 https://github.com/opencv/opencv/archive/4.3.0.zip

这里我们只安装基本的代码,如果结合contrib的话请参考相关资料。比如
《(5编译使用最新opencv)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练>
  
此外,如果从github上下载资料比较慢,请参考相关修改host的文章
  
  
  
3、打开cmake-gui开始编译
  
  
总的流程是两次Make,一次generate,其他情况一路回车。其中下载ipp比较消耗时间。
  
   

  
其中,第一次configure是读出有哪些需要配置的内容的,第二次configure是确认这些需要配置的内容,generate是生成make可以编译的内容。
  
   

  
而后进入目录(比如上图的opencv_bin目录)进行
  
make
  
sudo make install
  
我建议使用cmake-gui而不是cmake,因为在安装过程中,可能会出现一些问题,最好现场解决掉。
  
其中,make比较消耗时间,install是很快的。
  
   

  
4、 在QT中的配置并 编写测试程序(如果不使用QT可以不看)
  
读懂这段:
  
如果共享库文件安装到了/usr/local/lib(很多开源的共享库都会安装到该目录下)或其它"非/lib或/usr/lib"目录下, 那么在执行ldconfig命令前, 还要把新共享库目录加入到共享库配置文件/etc/ld.so.conf中, 如下:
         # cat /etc/ld.so.conf         
include ld.so.conf.d         /         *.conf         
# echo "/usr/local/lib" >> /etc/ld.so.conf         
# ldconfig         
我们肯定是需要修改的         
最后,我的结果为:         
INCLUDEPATH          +=          /usr         /local
         /include
         /opencv4 \
         
                        /usr         /local         /include
         /opencv4
         /opencv2
         
LIBS          +=          /usr         /local
         /lib
         /libopencv_highgui.so\
         
                 /usr         /local         /lib
         /libopencv_core.so\
         
                 /usr         /local         /lib
         /libopencv_videoio.so\
         
                 /usr         /local         /lib
         /libopencv_imgcodecs.so\
         
                 /usr         /local         /lib
         /libopencv_imgproc.so
         
          
  
  
   
    

 










