文档章节

dlib库学习之一

NathanJoy
 NathanJoy
发布于 2016/04/22 18:45
字数 1070
阅读 283
收藏 0

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

dlib库学习之一

1、介绍

跨平台 C++ 通用库 Dlib 发布 ,带来了一些新特性,包括概率 CKY 解析器,使用批量同步并行计算模型来创建应用的工具,新增两个聚合算法:中国低语 (Chinese Whispers) 和纽曼的模块化聚类。

Dlib是一个使用现代C++技术编写的跨平台的通用库,遵守Boost Software licence.

主要特点如下:

1.完善的文档:每个类每个函数都有详细的文档,并且提供了大量的示例代码,如果你发现文档描述不清晰或者没有文档,告诉作者,作者会立刻添加。

2.可移植代码:代码符合ISO C++标准,不需要第三方库支持,支持win32、Linux、Mac OS X、Solaris、HPUX、BSDs 和 POSIX 系统

3.线程支持:提供简单的可移植的线程API

4.网络支持:提供简单的可移植的Socket API和一个简单的Http服务器

5.图形用户界面:提供线程安全的GUI API

6.数值算法:矩阵、大整数、随机数运算等

7.机器学习算法:

8.图形模型算法:

9.图像处理:支持读写Windows BMP文件,不同类型色彩转换

10.数据压缩和完整性算法:CRC32、Md5、不同形式的PPM算法

11.测试:线程安全的日志类和模块化的单元测试框架以及各种测试assert支持

12.一般工具:XML解析、内存管理、类型安全的big/little endian转换、序列化支持和容器类

2.安装使用

  这个和boost使用方法有点像,但小得多,只要下载源码包就可以使用,不需要其他的三方库,帮助文档说了只要添加头文件引用就可以,如果报链接错误需要把all/source.cpp包含在项目中,这个cpp也只是包含一些头文件,假如不需要GUI功能就可以在这个定义宏

DLIB_NO_GUI_SUPPORT  这样可以减小执行文件大小 ,其他的一样

How to compile



To use this library all you have to do is extract it somewhere, make sure the folder containing the dlib folder is in your include path, and finally add dlib/all/source.cpp to your project. It is worth noting that most of dlib is "header-only" which means that, in many cases, you don't actually have to build dlib/all/source.cpp into your application. So if you don't get linker errors when you exclude dlib/all/source.cpp from your project then you don't need it.

 

3.小试牛刀

     这个例子介绍如何使用dlib ,定时器和client、server  pipe信息

     将dlib文件夹包含在项目的LINCLUDEPATH中

      这里用到了socket和线程所以需要包含 dlib/all/source.cpp

     我是用mingw 编译的所以需要指定要链接的系统库,这样编译就不会报错了

SOURCES += main.cpp \
    D:/Libs/dlib-18.10/dlib/all/source.cpp

LIBS += -lwsock32  -lws2_32 -limm32  -luser32 -lgdi32 -lcomctl32

INCLUDEPATH += D:/Libs/dlib-18.10

 

     

client代码

  

 1 #include <iostream>
 2 
 3 #include <dlib/bridge.h>
 4 #include <dlib/type_safe_union.h>
 5 #include <dlib/timer.h>
 6 
 7 using namespace std;
 8 using namespace dlib;
 9 
10 //管道
11 dlib::pipe<string>  out(4),in(4);
12 
13 
14 //定时器类
15 class timer_task
16 {
17   public:
18        //定时执行的函数
19        void timer_send()
20        {
21            string msg("this client msg");
22            out.enqueue(msg);
23 
24            std::string re;
25 
26            in.dequeue(re);
27            cout<<"client receive:"<<re<<endl;
28 
29        }
30 
31 };
32 
33 
34 
35 
36 int main()
37 {
38 
39     //这里应该是一个链接tcp server  ,因为我开两个client只有一个能收到信息,关闭一个后另一个就能收到
40     bridge b1(connect_to_ip_and_port("127.0.0.1", 12345), transmit(out),receive(in));
41 
42 
43 
44     timer_task task;
45 
46     //这个timer应该不和main在一个线程,应为如果不加下面的 dlib::sleep  程序会直接退出
47     timer<timer_task> t(task,&timer_task::timer_send);
48 
49     t.set_delay_time(1000);
50 
51     t.start();
52 
53 
54     dlib::sleep(10000000);
55 
56     return 0;
57 }

 

server

 1 #include <iostream>
 2 
 3 #include <dlib/bridge.h>
 4 #include <dlib/type_safe_union.h>
 5 #include <dlib/timer.h>
 6 
 7 using namespace std;
 8 using namespace dlib;
 9 
10 dlib::pipe<string>  in(4),out(4);
11 
12 
13 
14 class timer_task
15 {
16   public:
17        void timer_send()
18        {
19            string msg;
20            in.dequeue(msg);
21            cout<<"service receive:"<<msg<<endl;
22 
23 
24            std::string value = "this is server send";
25            out.enqueue(value);
26 
27        }
28 
29 };
30 
31 
32 
33 int main()
34 {
35     cout << "Hello World!" << endl;
36 
37     bridge b1(listen_on_port(12345),transmit(out), receive(in));
38 
39     timer_task task;
40 
41     timer<timer_task> t(task,&timer_task::timer_send);
42 
43     t.set_delay_time(1000);
44 
45     t.start();
46     dlib::sleep(10000000);
47 
48     return 0;
49 }

 

本文转载自:http://www.cnblogs.com/freegodly/p/4259040.html

上一篇: IDEA 16注册
下一篇: ASP.NET 定时通知
NathanJoy

NathanJoy

粉丝 1
博文 21
码字总数 5090
作品 0
西安
程序员
私信 提问
python人脸识别与特征描绘

实时人脸检测月特征描绘.gif 本文目录 介绍 人脸识别只是物体识别中的特殊应用,主要由两种方法。 HOG(Histogram of Oriented Gradients ),主要思路是根据图片像素点级别的亮暗变化,画出物...

斯坦因和他的狗
2017/08/23
0
1
应用一个基于Python的开源人脸识别库,face_recognition

转载请注明出处:http://blog.csdn.net/hongbinxu 或 http://hongbin96.com/ 文章链接:http://blog.csdn.net/hongbinxu/article/details/74981819 或http://hongbin96.com/125 今天看微信时......

hongbin_xu
2017/07/28
0
0
win10+anaconda+cuda配置dlib,使用GPU对dlib的深度学习算法进行加速(以人脸检测为例)

欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答、求职一站式搞定! 对商业智能BI、大数据分析挖掘、机器学习,python,R等数据领域感兴...

天善智能
2018/11/19
0
0
机器学习库dlib的C++编译和使用(windows和linux)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 https://blog.csdn.net/u012234115/article/details/90642844 dlib是一个C++编写的工具集,相...

踏莎行hyx
05/28
0
0
基于Python的开源人脸识别库:离线识别率高达99.38%

项目地址:https://github.com/ageitgey/face_recognition#face-recognition 本文的模型使用了C++工具箱dlib基于深度学习的最新人脸识别方法,基于户外脸部数据测试库Labeled Faces in the ...

zchang81
2017/07/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

在C语言中“静态”是什么意思?

我已经在C代码的不同地方看到了static一词。 这就像C#中的静态函数/类(实现在对象之间共享)吗? #1楼 多文件变量作用域示例 在这里,我说明了静态如何影响多个文件中函数定义的范围。 交流...

javail
19分钟前
3
0
利用 FC + OSS 快速搭建 Serverless 实时按需图像处理服务

作者:泽尘 简介 随着具有不同屏幕尺寸和分辨率设备的爆炸式增长,开发人员经常需要提供各种尺寸的图像,从而确保良好的用户体验。目前比较常见的做法是预先为一份图像存放多份具有不同尺寸的...

阿里巴巴云原生
21分钟前
2
0
前端架构最佳实践

Folders-by-Feature Structure 胜过 Folders-by-Type Structure

lilugirl
32分钟前
4
0
Seata AT 模式启动源码分析

从上一篇文章「分布式事务中间件Seata的设计原理」讲了下 Seata AT 模式的一些设计原理,从中也知道了 AT 模式的三个角色(RM、TM、TC),接下来我会更新 Seata 源码分析系列文章。今天就来分...

后端进阶
33分钟前
4
0
Python中“自我”一词的目的是什么?

Python中self词的目的是什么? 我知道它是指从该类创建的特定对象,但是我看不到为什么要将它显式地作为参数添加到每个函数中。 为了说明这一点,在Ruby中,我可以这样做: class myClass ...

技术盛宴
35分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部