作为一个小白,想修改opencv源码比较费力,自己踩了几个坑,因此替广大小白铺路。此文作为我的笔记,以后可能更新本文。
要修改opencv源码,分为3步:1、下载安装opencv、visual studio、CMake。2、使用CMake和visual studio编译opencv。3、建立新工程,在自己的工程内修改、调试opencv源码。
1、下载opencv、visual studio、CMake。
opencv在官网下载:https://sourceforge.net/projects/opencvlibrary/files/3.4.8/opencv-3.4.8-vc14_vc15.exe/download
visual studio2017在官网下载:https://visualstudio.microsoft.com/zh-hans/vs/older-downloads/
CMake在官网下载:https://cmake.org/download/
下载的都是官方正版,按照正常方法安装即可,必须是英文安装路径。
2、使用CMake和visual studio编译opencv。
首先使用CMake编译opencv:如下图,打开CMake,“Where is the source code”选择下载的opencv源码路径,我的源码在“D:/software/opencv3_4_8/opencv/sources”。“Where to build the binaries”存放CMake生成的文件,我把它们放在“D:/software/opencv3_4_8/opencv/build_vs”。点击“Confige”,选择对应的Visual Studio版本,然后点击finish。勾选BUILD_opencv_world。然后点击"Confige"直到最下面没有红色报错。然后点击“Generate”就好啦。
然后使用Visual Studio编译opencv:
①如下图:使用Visual Studio(以后简称VS)打开编译好的opencv工程,我的在“D:\software\opencv3_4_8\opencv\build_vs\OpenCV.sln”。
②选好对应的环境,我选的是Debug模式、Win32程序。
③在CMake Targets里选择ALL_BUILD右击,选择Build。完成后再选择CMake Targets里的INSTALL右击,Build。
另外,要将bin添加到系统环境变量中。我的目录为“D:\software\opencv3_4_8\opencv\build_vs\install\x86\vc15\bin” 。
3、建立新工程,在自己的工程内修改、调试opencv源码。
①建立新工程。我新建了一个empty project,名字叫imgProc。然后加入source.cpp源文件。新工程需要添加路径:选择View->Other windows->Property Manager。然后如下图,选择Property Manager中Debug|Win32里的Microsoft.Cpp.Win32.user右击,Porperties,在VC++ Directories里的Include Directories里添加对应包含文件,我的文件是:
D:\software\opencv3_4_8\opencv\build_vs\install\include
D:\software\opencv3_4_8\opencv\build_vs\install\include\opencv
D:\software\opencv3_4_8\opencv\build_vs\install\include\opencv2
②选择VC++ Directories里的Library Directories里添加lib文件,我添加的是:
D:\software\opencv3_4_8\opencv\build_vs\lib\Debug。
③添加lib文件,我在Linker->Input->Additional Dependencies里添加lib文件,我的路径为“D:\software\opencv3_4_8\opencv\build_vs1\install\x86\vc15\lib\opencv_world348d.lib”
③目前为止,已经可以运行opencv代码了,你可以试试下面的代码:
#include
#include
using namespace std;
using namespace cv;
int main(void)
{
// 注意,下面的路径改为你自己的图片
Mat picture = imread("D:\\document\\课题\\中期答辩\\图\\主梁.bmp");
imshow("测试程序", picture);
waitKey(0);//等待按键按下
return 0;
}
④然后进入修改opencv源码环节!
打开之前编译好的opencv源码工程OpenCV.sln。首先,将modules里的opencv_world右击,Properties,General里的Output Directory改为咱之前添加的系统Path路径,我之前设置的是“D:\software\opencv3_4_8\opencv\build_vs\install\x86\vc15\bin\”。然后把Debugging里的Debuger Type改为Mixed,Command改为想要之前新建工程的exe文件。我之前新建工程的exe路径为“D:\document\gongCheng\VS\imgProc\imgProc\Debug\imgProc.exe”。
现在设置了交叉调试,在OpenCV.sln里打上断点,倘若imgProc.exe走到了断点,就会可以调试啦。修改了opencv.sln里的代码,自己试试吧。我试试的情况如下图: