VS:在命令行中使用cl.exe编译运行opencv


1. 背景

  电脑中已安装VS,并配置好OpenCV。但VS真的太大,打开运行都很费时间,而且每次新建一个简单opencv程序便需要在VS中新建项目,嫌麻烦。故希望直接在命令行输入cl.exe的命令即可编译运行OpenCV程序。

2. OpenCV环境配置

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 NativeX64 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

搭建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版本共用。

OpenCV的库目录

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

Release版本运行结果

Debug运行结果

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值