1. 背景
电脑中已安装VS,并配置好OpenCV。但VS真的太大,打开运行都很费时间,而且每次新建一个简单opencv程序便需要在VS中新建项目,嫌麻烦。故希望直接在命令行输入cl.exe的命令即可编译运行OpenCV程序。
2. OpenCV环境配置
//在 Path 中,添加 bin 目录
D:\opencv3410\bulid_vs2019_x86\x86\vc16\bin;
//新建 INCLUDE 并添加包含目录
D:\opencv3410\bulid_vs2019_x86\include;
//新建 LIB 并添加库目录
D:\opencv3410\bulid_vs2019_x86\x86\vc16\lib;
3. 编译运行
3.1 搭建VS编程环境
点击电脑开始按钮,根据个人电脑搜索X86 Native或X64 Native,选择打开x86 Native Tools Command Prompt for VS 2019或者x64 Native Tools Command Prompt for VS 2019。此时,电脑会自动搭建VS编程环境。
注意:x86 Native Tools Command Prompt for VS 2019不同于cmd,它类似于搭建了VS编程环境的cmd。
3.2 确定链接文件
不同的OpenCV版本和编译方式会使生成的lib文件不一样。有的lib文件有两个版本,不带d结尾表示Release版本,带d结尾代表Debug版本;有的lib文件只有一个版本,即不带d结尾,表示Release和Debug版本共用。
Debug版本:
opencv_aruco3410d.lib
opencv_bgsegm3410d.lib
opencv_bioinspired3410d.lib
opencv_calib3d3410d.lib
opencv_ccalib3410d.lib
opencv_core3410d.lib
opencv_datasets3410d.lib
opencv_dnn3410d.lib
opencv_dnn_objdetect3410d.lib
opencv_dpm3410d.lib
opencv_face3410d.lib
opencv_features2d3410d.lib
opencv_flann3410d.lib
opencv_fuzzy3410d.lib
opencv_hfs3410d.lib
opencv_highgui3410d.lib
opencv_imgcodecs3410d.lib
opencv_imgproc3410d.lib
opencv_img_hash3410d.lib
opencv_line_descriptor3410d.lib
opencv_ml3410d.lib
opencv_objdetect3410d.lib
opencv_optflow3410d.lib
opencv_phase_unwrapping3410d.lib
opencv_photo3410d.lib
opencv_plot3410d.lib
opencv_reg3410d.lib
opencv_rgbd3410d.lib
opencv_saliency3410d.lib
opencv_shape3410d.lib
opencv_stereo3410d.lib
opencv_stitching3410d.lib
opencv_structured_light3410d.lib
opencv_superres3410d.lib
opencv_surface_matching3410d.lib
opencv_text3410d.lib
opencv_tracking3410d.lib
opencv_video3410d.lib
opencv_videoio3410d.lib
opencv_videostab3410d.lib
opencv_xfeatures2d3410d.lib
opencv_ximgproc3410d.lib
opencv_xobjdetect3410d.lib
opencv_xphoto3410d.lib
Release版本:
opencv_aruco3410.lib
opencv_bgsegm3410.lib
opencv_bioinspired3410.lib
opencv_calib3d3410.lib
opencv_ccalib3410.lib
opencv_core3410.lib
opencv_datasets3410.lib
opencv_dnn3410.lib
opencv_dnn_objdetect3410.lib
opencv_dpm3410.lib
opencv_face3410.lib
opencv_features2d3410.lib
opencv_flann3410.lib
opencv_fuzzy3410.lib
opencv_hfs3410.lib
opencv_highgui3410.lib
opencv_imgcodecs3410.lib
opencv_imgproc3410.lib
opencv_img_hash3410.lib
opencv_line_descriptor3410.lib
opencv_ml3410.lib
opencv_objdetect3410.lib
opencv_optflow3410.lib
opencv_phase_unwrapping3410.lib
opencv_photo3410.lib
opencv_plot3410.lib
opencv_reg3410.lib
opencv_rgbd3410.lib
opencv_saliency3410.lib
opencv_shape3410.lib
opencv_stereo3410.lib
opencv_stitching3410.lib
opencv_structured_light3410.lib
opencv_superres3410.lib
opencv_surface_matching3410.lib
opencv_text3410.lib
opencv_tracking3410.lib
opencv_video3410.lib
opencv_videoio3410.lib
opencv_videostab3410.lib
opencv_xfeatures2d3410.lib
opencv_ximgproc3410.lib
opencv_xobjdetect3410.lib
opencv_xphoto3410.lib
3.3 编译运行
编译时必须添加执行OpenCV的所需的库文件。一般来说,使用lib文件的Release版本。若是使用Debug版本,则需编译命令后添加/MTd。
// OpenCV程序
#include <opencv2/opencv.hpp>
#include <opencv2/highgui.hpp>
using namespace cv;
int main()
{
Mat img = imread("1.png");
cv::imshow("image", img);
cv::waitKey();
return 0;
}
// 跳转到OpenCV程序所在的文件夹
E: && cd E:\VSCode\git\vscode\opencv_cl
// Release版本编译命令
cl 1.cpp opencv_aruco3410.lib opencv_bgsegm3410.lib opencv_bioinspired3410.lib opencv_calib3d3410.lib opencv_ccalib3410.lib opencv_core3410.lib opencv_datasets3410.lib opencv_dnn3410.lib opencv_dnn_objdetect3410.lib opencv_dpm3410.lib opencv_face3410.lib opencv_features2d3410.lib opencv_flann3410.lib opencv_fuzzy3410.lib opencv_hfs3410.lib opencv_highgui3410.lib opencv_imgcodecs3410.lib opencv_imgproc3410.lib opencv_img_hash3410.lib opencv_line_descriptor3410.lib opencv_ml3410.lib opencv_objdetect3410.lib opencv_optflow3410.lib opencv_phase_unwrapping3410.lib opencv_photo3410.lib opencv_plot3410.lib opencv_reg3410.lib opencv_rgbd3410.lib opencv_saliency3410.lib opencv_shape3410.lib opencv_stereo3410.lib opencv_stitching3410.lib opencv_structured_light3410.lib opencv_superres3410.lib opencv_surface_matching3410.lib opencv_text3410.lib opencv_tracking3410.lib opencv_video3410.lib opencv_videoio3410.lib opencv_videostab3410.lib opencv_xfeatures2d3410.lib opencv_ximgproc3410.lib opencv_xobjdetect3410.lib opencv_xphoto3410.lib /EHsc /nologo
// Debug版本编译命令
cl 1.cpp opencv_aruco3410d.lib opencv_bgsegm3410d.lib opencv_bioinspired3410d.lib opencv_calib3d3410d.lib opencv_ccalib3410d.lib opencv_core3410d.lib opencv_datasets3410d.lib opencv_dnn3410d.lib opencv_dnn_objdetect3410d.lib opencv_dpm3410d.lib opencv_face3410d.lib opencv_features2d3410d.lib opencv_flann3410d.lib opencv_fuzzy3410d.lib opencv_hfs3410d.lib opencv_highgui3410d.lib opencv_imgcodecs3410d.lib opencv_imgproc3410d.lib opencv_img_hash3410d.lib opencv_line_descriptor3410d.lib opencv_ml3410d.lib opencv_objdetect3410d.lib opencv_optflow3410d.lib opencv_phase_unwrapping3410d.lib opencv_photo3410d.lib opencv_plot3410d.lib opencv_reg3410d.lib opencv_rgbd3410d.lib opencv_saliency3410d.lib opencv_shape3410d.lib opencv_stereo3410d.lib opencv_stitching3410d.lib opencv_structured_light3410d.lib opencv_superres3410d.lib opencv_surface_matching3410d.lib opencv_text3410d.lib opencv_tracking3410d.lib opencv_video3410d.lib opencv_videoio3410d.lib opencv_videostab3410d.lib opencv_xfeatures2d3410d.lib opencv_ximgproc3410d.lib opencv_xobjdetect3410d.lib opencv_xphoto3410d.lib /EHsc /nologo /MTd
// 运行
1.exe