ubuntu cmake opencv4.2

8 篇文章 1 订阅
5 篇文章 2 订阅

好久没有倒腾 opencv,发现opencv都4.2 版本了,今天编译发现其实cmake命令和3.×的差不多。
可以看看我以前倒腾的一个编译步骤。

我的opencv 和 opencv_contrib 都是克隆下来的,master目前的版本是4.3不稳定版本,所以建议checkout到4.2

# 在opencv下:
git checkout 4.2.0
# 在opencv_contrib下,版本一定要和opencv版本对应,否则会报错
git checkout 4.2.0

这次遇到的一个最大的问题,不是编译,而是一些文件的下载。在没有梯子的情况下,30k的小水管倒腾了一天,我下载好了,供大家使用。

这个包下载下来,还不能直接起到作用,要使用起来,还需要拷贝到对应的目录里面,我这里写了一个python脚本,供大家参考:

import os
import shutil

# 下面三个变量根据自己实际情况修改
package_path = './opencv_down_data'  # 我整理的包,大家可以在我分享的百度云盘或者csdn下载。
src_dir = '~/workspace/source_got/opencv/opencv-20200316/' # 是源代码目录
build_dir = os.path.join(src_dir, 'build/') # cmake 的编译目录

# 这个是opencv cmake 自创的一个缓存目录
catch_dir = os.path.join(src_dir, '.cache/')

# 下面是路径结构
# 前者文件名和下载名一样,是编译目录下的目录结构
# 后者文件名加上了hash校验值,是缓存目录下的目录结构
dir_paths = [#['3rdparty/ippicv/ippicv_2020_lnx_intel64_20191018_general.tgz',
    #'ippicv/7421de0095c7a39162ae13a6098782f9-ippicv_2020_lnx_intel64_20191018_general.tgz'], # 做到master分支上,导致资源是编译4.3的了
    ['3rdparty/ippicv/ippicv_2019_lnx_intel64_general_20180723.tgz',
    'ippicv/c0bd78adb4156bbf552c1dfe90599607-ippicv_2019_lnx_intel64_general_20180723.tgz'],#这个是4.2的资料
    ['3rdparty/ade/v0.1.1f.zip',
    'ade/b624b995ec9c439cbc2e9e6ee940d3a2-v0.1.1f.zip'],
    ['downloads/xfeatures2d/boostdesc_bgm.i',
    'xfeatures2d/boostdesc/0ea90e7a8f3f7876d450e4149c97c74f-boostdesc_bgm.i'],
    ['downloads/xfeatures2d/boostdesc_bgm_bi.i',
    'xfeatures2d/boostdesc/232c966b13651bd0e46a1497b0852191-boostdesc_bgm_bi.i'],
    ['downloads/xfeatures2d/boostdesc_bgm_hd.i',
    'xfeatures2d/boostdesc/324426a24fa56ad9c5b8e3e0b3e5303e-boostdesc_bgm_hd.i'],
    ['downloads/xfeatures2d/boostdesc_binboost_064.i',
    'xfeatures2d/boostdesc/202e1b3e9fec871b04da31f7f016679f-boostdesc_binboost_064.i'], 
    ['downloads/xfeatures2d/boostdesc_binboost_128.i',
    'xfeatures2d/boostdesc/98ea99d399965c03d555cef3ea502a0b-boostdesc_binboost_128.i'], 
    ['downloads/xfeatures2d/boostdesc_binboost_256.i',
    'xfeatures2d/boostdesc/e6dcfa9f647779eb1ce446a8d759b6ea-boostdesc_binboost_256.i'], 
    ['downloads/xfeatures2d/boostdesc_lbgm.i',
    'xfeatures2d/boostdesc/0ae0675534aa318d9668f2a179c2a052-boostdesc_lbgm.i'], 
    ['downloads/xfeatures2d/vgg_generated_48.i',
    'xfeatures2d/vgg/e8d0dcd54d1bcfdc29203d011a797179-vgg_generated_48.i'], 
    ['downloads/xfeatures2d/vgg_generated_64.i',
    'xfeatures2d/vgg/7126a5d9a8884ebca5aea5d63d677225-vgg_generated_64.i'], 
    ['downloads/xfeatures2d/vgg_generated_80.i',
    'xfeatures2d/vgg/7cd47228edec52b6d82f46511af325c5-vgg_generated_80.i'], 
    ['downloads/xfeatures2d/vgg_generated_120.i',
    'xfeatures2d/vgg/151805e03568c9f490a5e3a872777b75-vgg_generated_120.i'], 
    ['share/opencv4/testdata/cv/face//face_landmark_model.dat',
    'data/7505c44ca4eb54b4ab1e4777cb96ac05-face_landmark_model.dat' ]] 

# 如果还没有编译过,可能有的目录不存在
# 检查一下,没有创建一个
def chmk_parent_dir(p):
    t = os.path.dirname(p)
    if not os.path.exists(t):
        os.makedirs(t)

# 拷贝部分
for de in dir_paths:
    file_p = os.path.join(package_path, os.path.basename(de[0]))
    
    bin_p = os.path.join(build_dir, de[0])
    chmk_parent_dir(bin_p)
    shutil.copy(file_p, bin_p)

    catch_p = os.path.join(catch_dir, de[1])
    chmk_parent_dir(catch_p)
    shutil.copy(file_p, catch_p)
 
# 安装的时候遇到的坑,我怀疑这个ippicv是不是亲生的
# 这里需要自己解压 ippicv_2020_lnx_intel64_20191018_general
def cd_path(p):
    if os.path.exists(p):
        os.chdir(os.path.dirname(p)) if os.path.isfile(p) else os.chdir(p)
        return True
    else:
        print("dir not exists: %s" % (p))
        return False

ippicv = os.path.join(build_dir, package_path[0][0])
if cd_path(ippicv):
    os.system('tar xf %s' % (ippicv))

根据上面脚本,可以将文件拷贝到对应目录,骗过cmake到网上去下载程序包。

然后就cmake, 命令里面的路径根据自己的环境进行修改,这个是参考以前的文档修改的,当时没有做记录,大家将就看,也可以在官网文档上参考:

cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D INSTALL_PYTHON_EXAMPLES=ON \
    -D INSTALL_C_EXAMPLES=OFF \
    -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-20200316/modules \
    -D PYTHON_DEFAULT_EXECUTABLE=~/anaconda3/bin/python3 \
    -D WITH_TBB=ON \
    -D WITH_V4L=ON \
    -D WITH_QT=OFF \
    -D BUILD_opencv_python3=ON \
    -D BUILD_opencv_python2=OFF \
    -D PYTHON3_EXECUTABLE=~/anaconda3/bin/python3 \
    -D PYTHON3_INCLUDE_DIR=~/anaconda3/include/python3.7m \
    -D PYTHON3_LIBRARY=~/anaconda3/lib/libpython3.7m.so \
	-D PYTHON3_PACKAGES_PATH=~/anaconda3/lib/python3.7/site-packages \
    -D PYTHON3_NUMPY_INCLUDE_DIRS=~/anaconda3/lib/python3.7/site-packages/numpy/core/include/ \
    -D PYTHON_NUMPY_PATH=~/anaconda3/lib/python3.7/site-packages \
    -D WITH_GTK=ON \
    -D WITH_OPENGL=ON \
    -D WITH_CUDA=OFF \
    -D BUILD_EXAMPLES=ON \
    -D HDF5_hdf5_LIBRARY=/usr/lib/x86_64-linux-gnu/hdf5/serial/libhdf5.so .. 

然后make一下就好了

make -j8

其他问题:
如果 opencv 和 opencv_contrib 的版本没有对上,报错了:

Scanning dependencies of target example_tutorial_optical_flow_dense
/home/lhpc04/workspace2/source_got/opencv/opencv-20200316/samples/cpp/stitching_detailed.cpp: In function ‘int main(int, char**)’:
/home/lhpc04/workspace2/source_got/opencv/opencv-20200316/samples/cpp/stitching_detailed.cpp:434:31: error: ‘cv::xfeatures2d::SIFT’ has not been declared
         finder = xfeatures2d::SIFT::create();

问题不大,记得 使用对应版本。


嗯,完成!

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值