将Sublime Text 3打造成OpenCV3.2的IDE

 Windows下使用OpenCV常用的环境是Visual Studio,但是由于VS过于庞大而且大部分时候对于像我这样只需要进行一些简单图像处理的人来说,没必要使用VS,加上对Sublime Text的偏爱,于是就决定直接把Sublime Text配置成OpenCV的IDE,有同样兴趣的朋友不妨一看。

配置说明

  这篇文章主要针对64位系统。由于OpenCV3.X以上版本不再支持32位系统,所以使用32位系统的同学可以用OpenCV2.4.X参照本文的方法尝试一下,大概就是把下文中的x64文件夹换成x86文件夹,MinGW64换成32位版,我是说大概,没试过,不敢肯定。希望尝试过的可以之后到这篇文章尾部的留言板留言评论一下。使用到的软件及对应版本号如下:

  • MinGW-w64(6.3.0)
  • CMake(3.7.2)
  • OpenCV(3.2.0)
  • Sublime Text(3126)

  本文参考的文章如下:

gcc安装教程(windows版本)
Sublime Text 3 编译运行 OpenCV2.4.13

1. 配置MinGW-w64

  首先到sourceforce.net下载MinGW-64。这里有两种方法安装,由于网络原因,我比较推荐后者,但是都说明一下安装方法。一种是下载mingw-w64-install.exe,下载之后进行安装,会出现如下界面,有五个选项:

mingw-w64-install
  • (版本)Version 选择所能接受的最高版本
  • (架构)Architecture 32位cpu选择i686,64位cpu选择x86_64
  • (线程模式)Threads 如果使用posix api选择posix,如果使用win32 api选择win32
  • (异常处理机制)Exception 有三种,根据机器情况进行选择
    • SJLJ (setjmp/longjmp) 兼容性好,32位或64位架构都可以使用,但速度慢
    • DWARF (DW2, dwarf-2) 速度比SJLJ快,但只能用于32位架构,且有bug,尽量不用
    • SEH (zero overhead exception) 速度很快,但只能用于64位架构
  • (编译版本)Build revision 选择最高的

  第二种方法是直接下载对应选项的压缩包,解压到本地就能使用。64位看这里,32位看这里。下载完成之后,解压文件夹并重命名为MinGW(或者改成你喜欢的名字,但为了方便之后操作建议改成和我一样),建议存放路径不要有中文和空格,接着修改环境变量。或许有人不太清楚怎么改环境变量,下面就说明一下。
  打开文件资源管理器,右键此电脑或者计算机,点属性,win8及以上版本,右键左下角的Windows图标找到系统,在弹出的系统界面中,点击高级系统设置,弹出系统属性,在高级标签中找到环境变量,点击出现如下界面:

环境变量设置

  在用户变量中添加变量MinGW,值为MinGW的存放路径。点击用户变量窗口下的新建,在下图窗口中变量名设为MinGW,变量值点击浏览目录,选择MinGW文件夹,完成后点击确定
新建用户变量MinGW

  在用户变量中的Path变量中增加一项,选中用户变量中的Path,点击编辑,在如下窗口中,点击新建,输入MinGW中的bin文件夹路径,输入完成点击确定。
增加用户变量Path MinGW_bin

  在系统变量中的Path变量中也把MinGW中的bin文件夹路径增加进去,操作同上,不再赘述。
  环境变量设置完成不会马上生效,需要重启或者注销,推荐把所有程序退出后进行注销,在桌面使用快捷键Alt+F4选择注销,之后重新登录。打开命令提示符,win7程序–附件应该可以找到,win8及以上右键Windows图标选择命令提示符。在命令提示符中输入gcc --version,如果输出信息类似下面窗口则代表MinGW安装成功,否则请参照上文检查是否有步骤遗漏或者操作错误。
gcc版本查询

2. 配置OpenCV

下载安装OpenCV

  首先是到官网下载OpenCV,本文使用的是3.2的版本。下载完成之后得到一个exe文件,双击运行,实际上就是解压操作。运行完毕可以看到目标文件夹下面包含LICENSE.txtREADME.md.txtLICENSE_FFMPEG.txtbuild文件夹sources文件夹五项。将此解压文件夹命名为Opencv,存放到英文无空格路径。

编译OpenCV源码

  先下载Cmake,在Latest Release中找到Windows版下载。下载完成之后解压,得到若干文件夹,建议路径为英文无空格,以下不再强调说明。双击bin文件夹中的cmake-gui.exe即可运行Cmake,看到如下界面。

Cmake编译源码

  图中出现红色部分是因为我编译过了,不要紧张。source code选择Opencv文件夹里的sources文件夹build the binaries是设置输出文件夹。我这里为了演示使用了opencv2,但是实际操作的时候需要根据自己的路径设置,不要盲目地用图上的路径。在Opencv\build\x64中新建一个mingw文件夹,之后在build the binaries中选择此mingw文件夹。接着点击Configure按钮,出现如下窗口。

Configure1

  下拉菜单中选择MinGW Makefiles,点选Specify native compilers,之后点击Next

Configure2

  在新的窗口中设置编译器路径。C选择MinGW\bin\x86_64-w64-mingw32-gcc.exeC++选择MinGW\bin\x86_64-w64-mingw32-g++.exeFortran可以留空,也可以选择MinGW\bin\x86_64-w64-mingw32-gfortran.exe。设置完毕点击Finish,耐心等待进度条读完,直到输出窗口看到Configuring done。再次点击Configure等待进度条读完。之后点击Generate等待进度条读完,出现Generating done
  在文件资源管理器中打开Opencv\build\x64\mingw,在此目录下进入命令提示符。可以在此目录下按住shift同时点击右键,在出现的选项中选择在此处打开命令窗口。或者直接打开命令提示符,利用cd命令切换到Opencv\build\x64\mingw目录下。
  在命令提示符窗口中输入mingw32-make回车运行,耐心等待完成(大约50分钟,视电脑性能而定)。
  上述完成之后,需要将Opencv\build\x64\mingw\bin添加到系统环境变量Path中,添加方法同前述,不要忘记注销电脑使环境变量生效。

3. 配置ST3

  没有Sublime Text 3的,可以先到这里下载安装,建议用便携版,绝对好用。还可以点这里,你懂的😃。具体调教ST3的方法我就不多说了,可以参考如何优雅地使用Sublime Text3来进行设置。
  打开Sublime Text3,依次点击Tools-Build System-New Build System,新建opencv.sublime-build,可以参考如下代码并根据实际情况做修改。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
"cmd": ["g++", "${file}", "-o", "${file_path}/${file_base_name}",
"-I", "E:/Software/Study/Opencv/build/include",
"-I", "E:/Software/Study/Opencv/build/include/opencv",
"-I", "E:/Software/Study/Opencv/build/include/opencv2",
"-L", "E:/Software/Study/Opencv/build/x64/mingw/lib",
"-l", "opencv_core320", "-l", "opencv_imgproc320", "-l", "opencv_calib3d320","-l","opencv_objdetect320",
"-l", "opencv_video320", "-l", "opencv_features2d320", "-l", "opencv_ml320", "-l", "opencv_highgui320",
"-l", "opencv_flann320", "-l", "opencv_imgcodecs320", "-l", "opencv_photo320", "-l", "opencv_shape320",
"-l", "opencv_stitching320", "-l", "opencv_superres320", "-l", "opencv_videoio320", "-l", "opencv_videostab320"],
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"working_dir": "${file_path}",
"selector": "source.c, source.c++, source.cpp",
"encoding": "gbk",
"variants":
[
{
"name": "Run",
"cmd" : ["${file_path}/${file_base_name}"]
}
]
}

  上述代码的3到6行需要更改为自己的实际路径。8到11行为编译连接需要用到的dll,在Opencv\build\x64\mingw\bin目录下可以看到这些dll,将它们按照文件夹中的实际名称更改到代码中,名称中的数字是对应的版本号,名称前缀可以用opencv,也可以用libopencv,注意不要遗漏,否则无法通过编译。完成之后,在Tools-Build System中选择刚才新建的opencv,之后就可以编译运行了。

4. 测试程序

  新建一个cpp文件。下面的参考代码实现的是读取并显示图片。第6行需根据情况使用自己的图片并设置路径。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main(int argc, char* argv[])
{
const char* imagename = "E:/Document/opencv3/1.jpg";
//从文件中读入图像
Mat img = imread(imagename);
//如果读入图像失败
if(img.empty())
{
fprintf(stderr, "Can not load image %s\n", imagename);
return -1;
}
//显示图像
imshow("image", img);
//此函数等待按键,按键盘任意键就返回
waitKey();
return 0;
}

  使用快捷键Ctrl+shift+B可以选择编译还是运行,出现的选项中opencv是编译,opencv-Run是运行。快捷键Ctrl+B可以重复上次操作,如果选择的是编译,则再进行编译,如果选择的是运行,则再次运行。
  出现类似下方的图片,则证明所有配置已经完成,如果没有显示图片或者显示不正确,请仔细参照上文核对是否有步骤遗漏或操作错误。

测试程序

后记

  时间有限,未能完整测试此IDE能否实现opencv3所有功能,而且性能方面不知能否和VS等专业环境相比,但应付平时小工作应该是够了。

|