技术 编译 C++ OpenCV CLion MinGW CMake

所需软件

  • Git
  • CMake
  • MinGW-w64
  • CLion

安装步骤

下载源码

使用Git从Github官方库OpenCV下载源码,注若需要使用SIFT和SURF等收费模块需另外从OpenCV_contrib

配置CMake

打开CMake-gui,在第一栏输入OpenCV源码位置,第二栏选择编译后目录,可以选择如图所示OpenCV/build-debug或OpenCV/build

CMake-screenshot-1

点击Configure,Makefile格式选择MinGW Makefile编译器选择默认,之后需要等待一段时间。

等出现如图很多配置项后,即可跟剧需求做选择,如去除勾选test、doc、python、java等选项,按自己需求选择。

注意,为使用SIFT等算法,需将OPENCV_EXTRA_MODULES_PATH设置为下载的opencv_contrib/modules,同时注意把反斜杠换成斜杠。

同时可将CMAKE_BUILD_TYPE设为RelWithDebInfo ,这样方便对源码进行Debug。

设置完毕后再次点击Configure成功后再点Generate即可。

编译

命令行打开所配置的build目录,输入mingw32-make -j4 install进行编译,跟剧硬件配置将花费不同的时间,在我笔记本上花了大概30分钟,选项的-j4跟剧电脑核心数选择,即八核可以选择-j8

环境变量配置

打开环境变量配置,在path一项添加E:\opencv\build-debug\install\x64\mingw\bin,具体目录取决于编译目录。

之后重启电脑使环境变量生效。

CLion设置

新建CLion项目,将CMakeLists.txt内容写作:

cmake_minimum_required(VERSION 3.9)
## 你的项目名称
project(playopencv1)

set(CMAKE_CXX_STANDARD 11)

## OpenCV目录
set(OpenCV_DIR "E:\\opencv\\build-debug")
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/")

FIND_PACKAGE(OpenCV REQUIRED)

add_executable(playopencv1 main.cpp)


## 添加需要的库名字
set(OpenCV_LIBS opencv_core opencv_imgproc opencv_highgui opencv_imgcodecs opencv_xfeatures2d)

## linking
target_link_libraries(playopencv1 ${OpenCV_LIBS})

之后编写main.cpp:

#include <iostream>

#include "opencv2/opencv.hpp"
#include "opencv2/xfeatures2d.hpp"
#include "opencv2/features2d.hpp"
//
using namespace cv;
using namespace std;

int main()
{
    Mat img1 = imread("test.jpg");
    if (img1.empty())
    {
        cout << "error" << endl;
        return -1;
    }

    auto sift = xfeatures2d::SIFT::create();
    auto orb = ORB::create();
    auto img2 = img1.clone();

    vector<KeyPoint> keypoints_1, keypoints_2;

    sift->detect(img1, keypoints_1);
    orb->detect(img1, keypoints_2);

    drawKeypoints(img1, keypoints_1, img1);
    drawKeypoints(img2, keypoints_2, img2);
    cout<<"image size: "<<img1.size<<" "<<img2.size<<endl;
    hconcat(img1, img2, img1);
    cout<<"combined image size: "<<img1.size<<endl;

    namedWindow( "haha",CV_WINDOW_FREERATIO);
    imshow("haha", img1);
    waitKey(0);
    return 0;
}

test.jpg置入cmake-build-debug目录,运行,弹出图像并显示特征点,测试成功。



您可能需要科学上网来加载评论框