精通人脸识别02:集成环境安装和调试
精通人脸识别02:集成环境安装和调试
一、准备工作
1、下载安装VS2017,到官网下载:https://www.microsoft.com/zh-cn/,可以用免费版本社区版,注意下载的是一个几百K的脚本,运行脚本会进行边下边安装,因此需要带宽好些的网络,安装也快些,大概2个小时能完成。
2.准备的工具
- Opencv4.1.0.exe 下载地址https://github.com/opencv/opencv/releases
- Opencv_contrib 下载地址https://github.com/opencv/opencv_contrib/releases或者网盘地址下载https://pan.baidu.com/s/1XNYTtRRxPQZbisuIFvOIRg
- CMake 3.14.3 下载地址https://cmake.org/download/或者https://cmake.org/files/v3.14/
- 下载python2.7(选装) https://www.python.org/downloads/release/python-2715/
二、配置cmake和导出Opencv工程文件。
运行opencv-4.1.0-vc14_vc15.exe解压到文件夹cmake-3.14.3-win64-x64
在解压后的 cmake 目录中,找到 /bin 下的 cmake-gui.exe,点击运行,如下所示
其中, source code路径指向解压后的 “opencv/sources”,build 路径可指向自己建的一个 “result” 文件夹
注: 此处误将 source 路径指向了 "opencv-4.0/modules",导致 Configure 时出现如下错误
配置opencv-maste
设置好路径后,点击左下角的 Configure 按钮,弹出窗口,如下所示
点击 Finish 按钮,继续,此时主界面的 Configure 按钮变为 Stop,表示配置进行中
注意:如遇到问题,先检查错误信息;然后,点击 File -> Delete Cache,退出 cmake-gui,并将 build 文件夹内的内容清空,再重新配置
等 Configure 依次结束后,如果 cmake 的主界面仍有红色区域,则再次点击 Configure 进行配置,直到红色区域完全消失。
下图是 Configure 完成后的界面,红色消失,只剩白色的区域
配置opencv_contrib-master
找到 Name 下的 OPENCV_EXTRA_MODULES_PATH,为其设置 opencv_contrib-4.0.1的路径 ,精确到 /modules 目录
再次点击 Configure 进行配置,可能需要 Configure 两三次之后,红色区域才能完全消失。
最后,点击 Generate,出现 “Generating done” 则意味着 cmake 的工作结束了。
三、VS编译生成库文件
进入到生成的result 目录下,找到 OpenCV.sln,使用 VS 2017 打开。
找到 INSTALL,分别在 Debug 和 Release 模式下,根据系统选择 x86 或 x64,右键 -> 生成
待编译完成后在release文件夹生成各个模块的库文件
库文件列表:
ade.lib
opencv_aruco410.lib
opencv_bgsegm410.lib
opencv_bioinspired410.lib
opencv_calib3d410.lib
opencv_ccalib410.lib
opencv_core410.lib
opencv_datasets410.lib
opencv_dnn410.lib
opencv_dnn_objdetect410.lib
opencv_dpm410.lib
opencv_face410.lib
opencv_features2d410.lib
opencv_flann410.lib
opencv_fuzzy410.lib
opencv_gapi410.lib
opencv_hfs410.lib
opencv_highgui410.lib
opencv_imgcodecs410.lib
opencv_imgproc410.lib
opencv_img_hash410.lib
opencv_line_descriptor410.lib
opencv_ml410.lib
opencv_objdetect410.lib
opencv_optflow410.lib
opencv_phase_unwrapping410.lib
opencv_photo410.lib
opencv_plot410.lib
opencv_reg410.lib
opencv_rgbd410.lib
opencv_saliency410.lib
opencv_shape410.lib
opencv_stereo410.lib
opencv_stitching410.lib
opencv_structured_light410.lib
opencv_superres410.lib
opencv_surface_matching410.lib
opencv_text410.lib
opencv_tracking410.lib
opencv_ts410.lib
opencv_video410.lib
opencv_videoio410.lib
opencv_videostab410.lib
opencv_xfeatures2d410.lib
opencv_ximgproc410.lib
opencv_xobjdetect410.lib
opencv_xphoto410.lib
三、OPENCV调试例子
1) 环境变量,运行程序时候系统能加载共享库生成的dll文件。
计算机 -> 属性 -> 高级系统设置 -> 环境变量,编辑系统变量里的 path 变量,为其添加变量值 如:F:\SVN_CODE\CODE\OpenSource\opencv\opencv\result\bin\Release
2) 新建VS工程后,添加头文件和库文件
头文件: F:\SVN_CODE\CODE\OpenSource\opencv\opencv\build\include
库文件: F:\SVN_CODE\CODE\OpenSource\opencv\opencv\result\lib\Release
3) 依赖项
生成的 lib 库,格式为 “opencv_modulename_version.lib”,带 "_d" 的对应 Debug 模式,不带的对应 Release 模式。
可根据程序的需要,添加相应的静态库。 例如,人脸识别时,用到 face 模块,可在依赖项中,添加 opencv_face400d.lib
4)编写调试代码
// faceTest.cpp: 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <vector>
#include <iostream>
#include <opencv2/objdetect.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include "opencv2/imgproc/types_c.h"
#include <opencv2/highgui.hpp>
using namespace cv;
using namespace std;
int main(int argc, const char** argv)
{
Mat matTestSrc = imread("test.bmp");//加载图片全名称,如果不是当前目录就要带路径。
Mat outImgRz,OutImgCvt;
cvtColor(matTestSrc, OutImgCvt, CV_RGB2GRAY);//转为灰度图
resize(OutImgCvt, outImgRz, Size(200, 200));//resize为200*200的图像
equalizeHist(outImgRz, outImgRz);
imshow("test", outImgRz);
imwrite("testOut.jpg", OutImgCvt);
system("pause");
return 0;
}
原图和灰度化后的对照图: