VS2019配置OpenCV
- 1.下载文件
- 2.添加环境变量
- 3.配置vs2019
- 4.改变运行环境
- 5.测试
VS2019配置OpenCV 4.3
装好几次,每次都要找教程,累了。记录一下给自己凑活着看!
其他版本的OpenCV也适用,只不过是动态库的文件名不是430.dll而已
4.0为400.dll
4.1为410.dll
如此类推。
1.下载文件
(点我)
OpenCV官网下载openc4.3的exe文件。
双击即可解压(解压到任意路径,自己记得就好,不过后面的配置也是在根据这个解压路径来配置)
2.添加环境变量
2.1:添加系统环境变量path:
(解压路径)\opencv\build\x64\vc15\bin
2.2:复制动态库
将 (解压路径)\opencv\build\x64\vc15\bin文件夹中的
opencv_world430.dll,
opencv_world430d.dll,
opencv_videoio_ffmpeg430_64.dll,
复制到C:\Windows\System32
3.配置vs2019
视图 -> 其他窗口 -> 属性管理器,
选中 属性管理器中 Debug | x64 文件夹下的 Microsoft.Cpp.x64.user,
右键 – 属性(选择对Microsoft.Cpp.x64.user是对全局进行设置,也就是一次配置,以后都能用)
如果没有Microsoft.Cpp.x64.user这个文件,
就去下载文件放到C:\用户\用户名\AppData\Local\Microsoft\MSBuild\v4.0这个文件夹中(…/AppData/…为隐藏文件夹).
缺失的文件:链接:https://pan.baidu.com/s/1TTi6q1PaYzUiXZdn5Z9oxQ
提取码:to2y
VC++目录 – 包含目录
新建 浏览 添加以下路径
(解压路径)\opencv\build\include
(解压路径)\opencv\build\include\opencv2
VC++目录 – 库目录
新建 浏览 添加以下路径
(解压路径)\opencv\build\x64\vc15\lib
链接器 – 输入 – 附加依赖项
添加以下依赖
opencv_world430d.lib
opencv_world430.lib
(依赖所在目录: (解压路径)\opencv\build\x64\vc15\lib)
我用Debug | x64,所以选择添加opencv_world430d.lib的依赖就可以了。
debug模式 和 realse模式
(opencv_world430d.lib为debug模式的库)
(opencv_world430.lib为Release 模式的库)
4.改变运行环境
由于我们是对属性管理器中 Debug | x64 进行配置,所以模式和平台要选和下图一致。不然会找不到库。(如需要使用Release | X64,只需要把属性管理器中 Release | X64 文件夹下的 Microsoft.Cpp.x64.user中的属性表进行如上配置即可)
5.测试
(不要看代码多,复制就好了.不需要添加图片到工程里,可以直接测试)
#include <opencv2/core.hpp> #include <opencv2/imgproc.hpp> #include <opencv2/highgui.hpp> #define w 400 using namespace cv; void MyEllipse( Mat img, double angle ); void MyFilledCircle( Mat img, Point center ); void MyPolygon( Mat img ); void MyLine( Mat img, Point start, Point end ); int main( void ){ char atom_window[] = "Drawing 1: Atom"; char rook_window[] = "Drawing 2: Rook"; Mat atom_image = Mat::zeros( w, w, CV_8UC3 ); Mat rook_image = Mat::zeros( w, w, CV_8UC3 ); MyEllipse( atom_image, 90 ); MyEllipse( atom_image, 0 ); MyEllipse( atom_image, 45 ); MyEllipse( atom_image, -45 ); MyFilledCircle( atom_image, Point( w/2, w/2) ); MyPolygon( rook_image ); rectangle( rook_image, Point( 0, 7*w/8 ), Point( w, w), Scalar( 0, 255, 255 ), FILLED, LINE_8 ); MyLine( rook_image, Point( 0, 15*w/16 ), Point( w, 15*w/16 ) ); MyLine( rook_image, Point( w/4, 7*w/8 ), Point( w/4, w ) ); MyLine( rook_image, Point( w/2, 7*w/8 ), Point( w/2, w ) ); MyLine( rook_image, Point( 3*w/4, 7*w/8 ), Point( 3*w/4, w ) ); imshow( atom_window, atom_image ); moveWindow( atom_window, 0, 200 ); imshow( rook_window, rook_image ); moveWindow( rook_window, w, 200 ); waitKey( 0 ); return(0); } void MyEllipse( Mat img, double angle ) { int thickness = 2; int lineType = 8; ellipse( img, Point( w/2, w/2 ), Size( w/4, w/16 ), angle, 0, 360, Scalar( 255, 0, 0 ), thickness, lineType ); } void MyFilledCircle( Mat img, Point center ) { circle( img, center, w/32, Scalar( 0, 0, 255 ), FILLED, LINE_8 ); } void MyPolygon( Mat img ) { int lineType = LINE_8; Point rook_points[1][20]; rook_points[0][0] = Point( w/4, 7*w/8 ); rook_points[0][1] = Point( 3*w/4, 7*w/8 ); rook_points[0][2] = Point( 3*w/4, 13*w/16 ); rook_points[0][3] = Point( 11*w/16, 13*w/16 ); rook_points[0][4] = Point( 19*w/32, 3*w/8 ); rook_points[0][5] = Point( 3*w/4, 3*w/8 ); rook_points[0][6] = Point( 3*w/4, w/8 ); rook_points[0][7] = Point( 26*w/40, w/8 ); rook_points[0][8] = Point( 26*w/40, w/4 ); rook_points[0][9] = Point( 22*w/40, w/4 ); rook_points[0][10] = Point( 22*w/40, w/8 ); rook_points[0][11] = Point( 18*w/40, w/8 ); rook_points[0][12] = Point( 18*w/40, w/4 ); rook_points[0][13] = Point( 14*w/40, w/4 ); rook_points[0][14] = Point( 14*w/40, w/8 ); rook_points[0][15] = Point( w/4, w/8 ); rook_points[0][16] = Point( w/4, 3*w/8 ); rook_points[0][17] = Point( 13*w/32, 3*w/8 ); rook_points[0][18] = Point( 5*w/16, 13*w/16 ); rook_points[0][19] = Point( w/4, 13*w/16 ); const Point* ppt[1] = { rook_points[0] }; int npt[] = { 20 }; fillPoly( img, ppt, npt, 1, Scalar( 255, 255, 255 ), lineType ); } void MyLine( Mat img, Point start, Point end ) { int thickness = 2; int lineType = LINE_8; line( img, start, end, Scalar( 0, 0, 0 ), thickness, lineType ); }