Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用cmake编译OpenCV?_Opencv_Cmake - Fatal编程技术网

如何使用cmake编译OpenCV?

如何使用cmake编译OpenCV?,opencv,cmake,Opencv,Cmake,我正在尝试编译OpenCV,以便它具有sift模块 我使用下载了CMake 我还下载并解压缩了opencv-4.3.0和opencv_contrib 我创建了一个空文件夹,打开终端,并使用以下行导航到它: cd ~/opencvMaster/build 然后,当我在终端的这个空文件夹中时,我运行了以下行: cmake -DOPENCV_ENABLE_NONFREE:BOOL=ON -DOPENCV_EXTRA_MODULES_PATH= ~/openCVMaster/opencv_contri

我正在尝试编译OpenCV,以便它具有sift模块

我使用下载了CMake

我还下载并解压缩了opencv-4.3.0和opencv_contrib

我创建了一个空文件夹,打开终端,并使用以下行导航到它:

cd ~/opencvMaster/build
然后,当我在终端的这个空文件夹中时,我运行了以下行:

cmake -DOPENCV_ENABLE_NONFREE:BOOL=ON -DOPENCV_EXTRA_MODULES_PATH= ~/openCVMaster/opencv_contrib-master/modules ~/openCVMaster/opencv-4.3.0
它配置并生成了这些文件。然后输入
make
。获取了以下错误:

[ 82%] Building CXX object modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/src/boostdesc.cpp.o
~/opencvMaster/opencv_contrib-e6f32c6a69043456a806a4e802ee3ce7b7059c93/modules/xfeatures2d/src/boostdesc.cpp:654:20: fatal error: boostdesc_bgm.i: No such file or directory
           #include "boostdesc_bgm.i"
                    ^~~~~~~~~~~~~~~~~
compilation terminated.
我按照找到的建议添加了以下文件:

cd ~/openCVMaster/opencv_contrib-4.3.0/modules/xfeatures2d/src
curl wget https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_lbgm.i >boostdesc_lbgm.i
curl wget https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_binboost_256.i >boostdesc_binboost_256.i
curl wget https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_binboost_128.i >boostdesc_binboost_128.i
curl wget https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_binboost_064.i >boostdesc_binboost_064.i
curl wget https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm_hd.i >boostdesc_bgm_hd.i
curl wget https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm_bi.i >boostdesc_bgm_bi.i
curl wget https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm.i >boostdesc_bgm.i
curl wget https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_120.i > vgg_generated_120.i
curl wget https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_64.i >vgg_generated_64.i
curl wget https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_48.i >vgg_generated_48.i
curl wget https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_80.i >vgg_generated_80.i
这是向前迈出的一步:不再出现与vgg或boostdesc相关的错误。出现一个新错误:
opencv\u contrib-master/modules/xfeatures2d/test/test\u features2d.cpp:51:10:致命错误:features2d/test/test\u detectors\u returnal.impl.hpp:没有这样的文件或目录

按照阿玛的建议)我下载了
https://github.com/opencv/opencv/tree/master/modules
。下载后,我找到了它的子文件夹“features2d”,并将其放入
opencv\u contrib-master/modules/xfeatures2d/test/

仍然有一个错误-

~/openCVMaster/opencv_contrib-master/modules/xfeatures2d/test/features2d/misc/java/src/cpp/features2d_converters.cpp:2:10: fatal error: common.h: No such file or directory
 #include "common.h"
我补充说:

cd ~/openCVMaster/opencv_contrib-master/modules/xfeatures2d/test/features2d/misc/java/src/cpp
curl wget https://raw.githubusercontent.com/ray-project/common/master/common.h > common.h
我再次运行了
make
,并得到以下错误:

~/openCVMaster/opencv_contrib-master/modules/xfeatures2d/test/features2d/misc/java/src/cpp/features2d_converters.cpp: In function ‘void Mat_to_vector_KeyPoint(cv::Mat&, std::vector<cv::KeyPoint>&)’:
~/openCVMaster/opencv_contrib-master/modules/xfeatures2d/test/features2d/misc/java/src/cpp/features2d_converters.cpp:7:38: error: ‘LOGD’ was not declared in this scope
 #define CHECK_MAT(cond) if(!(cond)){ LOGD("FAILED: " #cond); return; }

~/openCVMaster/opencv_contrib-master/modules/xfeatures2d/test/features2d/misc/java/src/cpp/features2d_converters.cpp:14:5: note: in expansion of macro ‘CHECK_MAT’
     CHECK_MAT(mat.type()==CV_32FC(7) && mat.cols==1);
     ^~~~~~~~~
~/openCVMaster/opencv_contrib-master/modules/xfeatures2d/test/features2d/misc/java/src/cpp/features2d_converters.cpp: In function ‘void Mat_to_vector_DMatch(cv::Mat&, std::vector<cv::DMatch>&)’:
~/openCVMaster/opencv_contrib-master/modules/xfeatures2d/test/features2d/misc/java/src/cpp/features2d_converters.cpp:7:38: error: ‘LOGD’ was not declared in this scope
 #define CHECK_MAT(cond) if(!(cond)){ LOGD("FAILED: " #cond); return; }
~/openCVMaster/opencv_contrib-master/modules/xfeatures2d/test/features2d/misc/java/src/cpp/features2d_converters.cpp:在函数“void Mat_to_vector_KeyPoint(cv::Mat&,std::vector&)”中:
~/openCVMaster/opencv_contrib-master/modules/xfeatures2d/test/features2d/misc/java/src/cpp/features2d_转换器。cpp:7:38:错误:“LOGD”未在此范围内声明
#定义CHECK#MAT(cond)if(!(cond)){LOGD(“FAILED:#cond);return;}
~/openCVMaster/opencv\u contrib-master/modules/xfeatures2d/test/features2d/misc/java/src/cpp/features2d\u转换器。cpp:14:5:注意:在宏“CHECK\u MAT”的展开中
检查材料(材料类型()=CV_32FC(7)和材料类别==1);
^~~~~~~~~
~/openCVMaster/opencv_contrib-master/modules/xfeatures2d/test/features2d/misc/java/src/cpp/features2d_converters.cpp:在函数“void Mat_to_vector_DMatch(cv::Mat&,std::vector&)”中:
~/openCVMaster/opencv_contrib-master/modules/xfeatures2d/test/features2d/misc/java/src/cpp/features2d_转换器。cpp:7:38:错误:“LOGD”未在此范围内声明
#定义CHECK#MAT(cond)if(!(cond)){LOGD(“FAILED:#cond);return;}
欢迎任何建议。

  • 下载
    opencv-4.3.0.zip
    opencv\u contrib-4.3.0.zip.
    解压
  • 打开
    opencv\u contrib-4.3.0\modules。
    复制显示
    xfeatures2d
    的文件夹。打开
    opencv-4.3.0\modules
    ,然后粘贴刚刚复制的文件夹(
    xfeatures2d
  • 创建一个空文件夹,并将其命名为“Build45”
  • 打开cmakegui
  • 在显示“在何处生成二进制文件”的框中,放置表示空文件夹的文件路径(
    Build45
  • 在写有“源代码在哪里”的框中,放入表示
    opencv-4.3.0的文件路径。

  • 单击配置。选项将出现
  • 在搜索框中输入“free”,并选中显示OPENCV_ENABLE_NONFREE的框
  • 输入
    xfeatures2d
    并选中显示“Build\u opencv\u xfeatures2d”的框`
  • 再次单击
    configure
    。(仔细检查是否正确:cmake gui中还有第二个框提供构建详细信息。您应该看到
    非自由算法:YES
  • 单击
    生成
  • 检查build45文件夹是否已填充内容
  • 打开终端并导航到build45文件夹(
    cd~/opencv master/build45
  • 键入
    cmake.
  • 键入
    make
  • 注意:*编译需要几个小时。请自己泡杯茶*
  • 键入
    sudo make安装
  • 检查它是否工作:在终端中,键入
    python3
  • 类型
    导入cv2
  • 键入
    sift=cv2.xfeature2d.sift\u create()
  • 您不应出现错误。如果确实出现错误,以下故障排除工具可能会有所帮助:
此外,如果您担心侵犯专利权,请点击此处进行讨论:

从下载并安装CMake v3.10.0。

在安装过程中,选择“将CMake添加到系统路径”

转到并下载opencv_contrib-3.3.1源代码zip

解压缩这两个zip文件。虽然您可以将opencv和opencv_contrib文件夹保留在任何位置,但我建议您将它们保留在同一目录中。我已将这两个文件夹放置在“我的文档”目录中

注意:从这里开始,我们将opencv-3.3.1文件夹的路径称为opencv_路径。例如,在我的例子中,opencv_路径是C:/Users/Vaibhaw Chandel/Documents/opencv-3.3.1

根据您保存opencv-3.3.1文件夹的位置,此路径会有所不同

步骤5:使用CMake生成Visual Studio项目 运行Cmake,在“源代码在哪里”框中写入OPENCV_路径(即OPENCV-3.3.1文件夹的路径)的值和构建目录的路径。我们将选择构建目录作为OPENCV_路径/build

现在单击配置。 您将被要求获得创建生成文件夹的权限。单击“是”

当提示选择编译器时,请选择Visual Studio 14 2015 Win64。

单击finish,并在下一个窗口中保持选中默认参数。

单击finish。现在CMake将查看系统目录并生成makefiles

步骤5.1:对CMake配置的其他更改 我们将对CMake生成的默认配置进行一些更改。单击图像以查看更大的版本

选中“安装C_示例”和“安装PYTHON_示例” 在标志“OPENCV_EXTRA_MODULES_PATH”中,给出OPENCV_contrib-3.3.1中模块目录的路径。在本例中,我们在文档中保留了OPENCV_contrib-3.3.1
import cv2
print cv2.getBuildInformation()
import cv2
funcs = dir(cv2)
for f in funcs:
...     print(f)
# Step 1: Install VS 2017 for cmake 
 # Step 2: Install CMake
# step 3: install Anaconda
# step 4: Download and extract opencv-3.3.1 and opencv_contrib-3.3.1
Go to https://github.com/opencv/opencv/releases and download opencv-3.3.1 source code zip
cmake.exe --build . --config Release --target INSTALL
cmake.exe --build . --config Debug --target INSTALL