将DAA人脸检测做成动态库以便其他程序调用,采用隐式调用完成。

给出部分关于dll制作的关键代码:

1.DLL

多项目DLL编写注意将其他相关项目设置成静态库,以及各库涉及的版本一致性。

DLL.h

 #define DLL_API __declspec(dllexport)
#include<iostream>
#include<opencv.hpp> DLL_API void FaceDecter(cv::Mat& source,std::vector<cv::Rect>& rects);

DLL.cpp

 #include "stdafx.h"
#include "FaceDectectDll.h"
#include "../libmi_dpm/face_detector.hpp"
#include <fstream> using namespace std;
using namespace mi_dpm;
using namespace cv; DLL_API void FaceDecter(cv::Mat &source, std::vector <cv::Rect> & rects)
{
Detector face_det;
face_det.detectInit();
vector<float> scores;
vector<int> picked;
picked = face_det.detectFastMerge(source, rects, scores);
}

2.DLL调用

在demo中新建文件夹 lib-DAA ,include-DAA 存放静态库以及相关头文件,在可执行文件下放入动态库dll。

demo.h

 // stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently,
// but are changed infrequently #pragma once #ifndef _SECURE_ATL
#define _SECURE_ATL 1
#endif #ifndef VC_EXTRALEAN
#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
#endif #define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // some CString constructors will be explicit // turns off MFC's hiding of some common and often safely ignored warning messages
#define _AFX_ALL_WARNINGS #include "../include-DAA/FaceDectectDll.h"
#pragma comment(lib,"../lib-DAA/lib3000fps.lib")
#pragma comment(lib,"../lib-DAA/liblinear.lib")
#pragma comment(lib,"../lib-DAA/libmi_dpm.lib")
#pragma comment(lib,"../lib-DAA/mi_dpm.lib") //#include <cxcore.h>
//#include <highgui.h>
#include<opencv.hpp> using namespace cv;
using namespace std;

demo.cpp

 #include <iostream>
#include "stdafx.h" //#include <Windows.h> int main()
{
Mat im = imread("F:/科研/人脸识别/DAA/mi_dpm/mi_dpm/testpic/tmp_rs.jpg");
vector<Rect> re;// = FaceDecter(im);
FaceDecter(im, re);
int nNum = re.size();
cout << nNum << endl;
for (int i = ; i < nNum; i++)
{
cv::rectangle(im, re[i], cv::Scalar(, , ), );
printf("%d %d %d %d\n", re[i].x, re[i].y, re[i].width, re[i].height);
}
imshow("dec",im);
waitKey();
system("pause"); }

C++ 多项目dll调用-隐式的更多相关文章

  1. C++ dll的隐式与显式调用

    应用程序使用DLL可以采用两种方式:一种是隐式链接,另一种是显式链接.在使用DLL之前首先要知道DLL中函数的结构信息.Visual C++6.0(或者更先进的版本)在VC\bin目录下提供了一个名为 ...

  2. Java 显示调用隐式调用

    当你没有使用父类默认的构造方法时,此时在子类的构造方法中就需要显示的调用父类定义的构造方法.比如:父类:class Animal{ private String name; //如果你定义一个新的构造 ...

  3. JSP——JavaServer Page中的隐式对象(implicit object)、指令(directive)、脚本元素(scripting element)、动作(action)、EL表达式

    目录 1.JSP概述 2.注释(comment) 2.1.JSP注释 2.2.HTML注释 3.隐式对象(implicit object) 3.1.隐式对象清单 3.2.request对象 3.3.o ...

  4. Scala入门系列(十二):隐式转换

    引言 Scala提供的隐式转换和隐式参数功能,是非常有特色的功能.是Java等编程语言所没有的功能.它可以允许你手动指定,将某种类型的对象转换成其他类型的对象.通过这些功能可以实现非常强大而且特殊的功 ...

  5. 显式与隐式(ExplicitAndImplicit)

    显式与隐式(Explicit And Implicit) 1.概念 1.1 显式 实现的单词Explicit意思是清楚的.明确的.详述的.所以,显式的“显”是指明显且清楚的实现,相对于接口来说,就是明 ...

  6. Scala 隐式(implicit)详解

    文章正文 通过隐式转换,程序员可以在编写Scala程序时故意漏掉一些信息,让编译器去尝试在编译期间自动推导出这些信息来,这种特性可以极大的减少代码量,忽略那些冗长,过于细节的代码. 1.Spark 中 ...

  7. C++隐式转换与显式转换

    普通类型的转换顺序:隐式把char——>int和从short——>double.转换可能会导致数据的丢失. 自定义类型:有两种函数可以进行隐式转换,单参数构造函数 和 隐式类型转换符.   ...

  8. C++隐式类类型转化

    隐式类类型转换:可以用 单个形参来调用 的构造函数定义了从 形参类型 到 该类类型 的一个隐式转换 class Person { public: Person(): mName()name, mAge ...

  9. scala的隐式转换学习总结(详细)

    一,隐式转换函数 1, 格式, implicit def 函数名(参数):返回值类型={ //函数体 //返回值 } 2,例子: //导入对应的规则类,以免出现警告 scala> import ...

随机推荐

  1. 实践与理解CMM体系

    我的项目管理之路--5.实践与理解CMM体系   分类: 管理专辑(65) 过程改进(9) 软件工程(52) 版权声明:本文为博主原创文章,未经博主允许不得转载. 一个现代企业我们可以把它比作为自然界 ...

  2. ASP.NET Core 依赖注入(构造函数注入,属性注入等)

    原文:ASP.NET Core 依赖注入(构造函数注入,属性注入等) 如果你不熟悉ASP.NET Core依赖注入,先阅读文章: 在ASP.NET Core中使用依赖注入   构造函数注入 构造函数注 ...

  3. C语言枚举类型(Enum)

    在实际编程中,有些数据的取值往往是有限的,只能是非常少量的整数,并且最好为每个值都取一个名字,以方便在后续代码中使用,比如一个星期只有七天,一年只有十二个月,一个班每周有六门课程等. 以每周七天为例, ...

  4. POJ训练计划1035_Spell checker(串处理/暴力)

    Spell checker Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 18418   Accepted: 6759 De ...

  5. Ubuntu 14.04安装搜狗拼音linux版应该注意的问题

    Ubuntu 14.04最终在万千期盼中来了,我也像其他的linux爱好者一样,删除了旧的12.04.開始体验下一个到来的LTS版本号. 我不想安装Ubuntu 麒麟版,我仅仅想原汁原味的Ubuntu ...

  6. windows服务 MVC之@Html.Raw()用法 文件流的读写 简单工厂和工厂模式对比

    windows服务   public partial class Service1 : ServiceBase{ System.Threading.Timer recordTimer;public S ...

  7. C指针——C语言手记

    近期敲代码的时候.发现自己非常多东西都開始忘了. 今天最终有机会好好总结一下指针.当做个笔记同一时候也希望对大家实用.假设有不对的地方.希望大家能帮我指正一下.然后我的实验环境是32位RHEL+ecl ...

  8. Python基础二--基本控制语句

    基本接触每一种语言,都须要做的:1.print 一个"Hello world!" 2.了解主要的数据类型 3.学习控制语句. 当我们学习控制语句,一般都离不开if,for ,whi ...

  9. 说说怎样管理软件日常执行的server

    大家应该都有这种情况.就是软件开发时都是全力以赴的把软件开发出来.一旦软件上线执行起来我们就能松口气.从而放松了对server及数据的管理.往往这个时候.server的一个小故障都能让我们忙上好一阵. ...

  10. salt.states.file试用

    从master往linux上的minion复制文件参考http://netkiller.sourceforge.net/linux/management/saltstack.html后半部分,他已经写 ...