- 封装为更易用的库
- 跨平台适配
- 优化代码结构
- 支持python
git克隆时同步克隆子模块
git clone --recurse-submodules https://github.com/acai66/opencv_matching.git
使用各种编译cmake的方法(vs2022、vs2019、vs2017、或cmake-gui)编译即可,演示使用vs2022编译,其余工具供参考。
编译演示视频:B站链接
演示Ubuntu 22.04下编译,其他发行版类似
- 安装依赖和编译工具
sudo apt-get update
sudo apt-get install libopencv-dev build-essential cmake
- 终端进入到项目根目录,创建build文件夹
cd opencv_matching
mkdir build
cd build
- cmake构建
cmake -DCMAKE_INSTALL_PREFIX=./install ..
- make编译
make
- 安装
make install
成功后会在 build
目录下生成 install
文件夹,里面包含编译好的库(lib)和头文件(include), 以及 demo
可执行文件(bin).
目录结构如下:
install
├── bin
│ └── demo
├── include
│ ├── matcher.h
│ └── templatematching.h
└── lib
├── libtemplatematching.so
└── libtemplatematching_ctype.so
到 install/bin
下运行 demo
时,需要确保 libtemplatematching.so
在运行目录下,或者将 libtemplatematching.so
放到系统库目录下。
cd install/bin/
cp ../lib/libtemplatematching.so ./
./demo
-
作者机器上不同项目使用的opencv版本不同,所以没有把opencv添加到系统环境变量中,opencv放进了3rdParty文件夹下,目录结构参考如下:
-
如需修改opencv路径,可能需要修改如下信息,具体参考
CMakeLists.txt
和matcher/CMakeLists.txt
文件:CMakeLists.txt
if(CMAKE_HOST_SYSTEM_NAME MATCHES "Windows") set(OpenCV_DIR ${PROJECT_SOURCE_DIR}/3rdParty/opencv) endif()
matcher/CMakeLists.txt
if(WIN32) install(FILES ${PROJECT_SOURCE_DIR}/3rdParty/opencv/x64/vc16/bin/opencv_world490.dll TYPE BIN DESTINATION ${CMAKE_INSTALL_BINDIR}) else()
将编译的库集成到其他项目中
编译完成后,可以在安装目录下找到 templatematching.dll
和 templatematching_ctype.dll
c++编译时只需要引入头文件即可,dll是在运行时加载的,只需要 templatematching.dll
,详细调用参考 demo.cpp
python使用时需要将 templatematching.dll
和 templatematching_ctype.dll
放进运行目录,演示代码参考 py_demo.py