龙空技术网

在Visual C++工程中使用OpenCV的静态库

klogin 178

前言:

如今咱们对“java静态库”可能比较注重,看官们都想要剖析一些“java静态库”的相关内容。那么小编同时在网络上网罗了一些对于“java静态库””的相关知识,希望各位老铁们能喜欢,看官们一起来学习一下吧!

OpenCV工程采用静态编译的好处主要在于,程序发布时所需要的空间更小,不需要拷贝支撑的DLL文件;而动态编译的程序发布时,必须连同支撑的OpenCV DLL文件一起拷贝,否则会出现找不到DLL的运行错误。

采用静态库编译的代码如下所示,在程序开始,加入#pragma comment指令加入了对静态库的链接(这里编译的Debug版本,如果编译的是Release版本,则需要修改相应的lib文件名)。同时在工程的属性中需要设置使用静态MFC库,以支持图形用户界面,如下图所示。

与使用动态库的代码相比,主程序完全一样,但是在链接时需要加入Windows的图形界面库,第三方软件库(编译时生成在build/3rdparty目录下)。

#include "pch.h"

#include <iostream>

#include "opencv.hpp" //OpenCV头文件

#include "highgui.hpp" //GUI界面头文件

using namespace cv; //打开cv的命名空间

//Windows图形界面库

#pragma comment(lib, "User32.lib")

#pragma comment(lib, "Gdi32.lib")

#pragma comment(lib, "Advapi32.lib")

#pragma comment(lib, "comdlg32.lib")

#ifdef _DEBUG

//第三方软件库

#pragma comment(lib, "ade.lib")

#pragma comment(lib, "IlmImfd.lib")

#pragma comment(lib, "ippiwd.lib")

#pragma comment(lib, "ippicvmt.lib")

#pragma comment(lib, "ittnotifyd.lib")

#pragma comment(lib, "libjasperd.lib")

#pragma comment(lib, "libjpeg-turbod.lib")

#pragma comment(lib, "libpngd.lib")

#pragma comment(lib, "libprotobufd.lib")

#pragma comment(lib, "libtiffd.lib")

#pragma comment(lib, "libwebpd.lib")

#pragma comment(lib, "quircd.lib")

#pragma comment(lib, "zlibd.lib")

//OpenCV软件库

#pragma comment(lib, "opencv_world420d.lib")

#endif

int main()

{

Mat img = imread("lena512color.tiff"); //读取图像

if (img.empty()) {

return -1; //如果读取图像失败,则会返回

}

imshow("lena", img); //显示图像

waitKey(0); //等待用户输入

std::cout << "Hello World!\n";

}

标签: #java静态库 #opencv420安装教程