#include<iostream>
#include<string>
using namespace std;
int main()
{
int a=5,b=10,c=15;
int *p1; //int * 是定义p1为指针,
int &d=b; //&引用d为b.
p1=&a; //&取地址
cout <<*p1<<endl; //×取p1地址的内容。
return 0;
}
template <
typename image_scanner_type_ //定义了函数模板,image_scanner_type_是一种类型。
>
class object_detector
{
public:
typedef image_scanner_type_ image_scanner_type; //定义了类型
typedef typename image_scanner_type::feature_vector_type feature_vector_type;
。。。。。。
typedef创建了存在类型的别名,而typename告诉编译器image_scanner_type::feature_vector_type
是一个类型而不是一个成员。
若不加typename则不知道image_scanner_type::feature_vector_type是静态数据成员
静态成员函数 嵌套类型 中的哪一个。
vector < Rect > faces 是容器。
vector是一种数据结构
表示这个容器的类型是Rect,Rect是一种数据类型,类似int,float等。。
整体定义了faces对象是一个RECT数组。
namespace dlib
{
typedef object_detector<scan_fhog_pyramid<pyramid_down<6> > > frontal_face_detector;
inline const std::string get_serialized_frontal_faces();
inline frontal_face_detector get_frontal_face_detector()
{
std::istringstream sin(get_serialized_frontal_faces());
//C++中有三种字符串流,分别是istringstream ,ostringstream,stringstream,分别处理字符串流的输入,
//输出,和输入输出。istringstream sin(s);定义一个字符串输入流的对象sin,并调用sin的复制构造函数,
//将s中所包含的字符串放入sin 对象中!
frontal_face_detector detector;
deserialize(detector, sin);
return detector;
}
。。。。。。。
template <typename T>
void deserialize (
object_detector<T>& item,
std::istream& in
)
{
int version = 0;
deserialize(version, in);
if (version == 1)
{
deserialize(item.scanner, in);
item.w.resize(1);
deserialize(item.w[0].w, in);
item.w[0].init(item.scanner);
deserialize(item.boxes_overlap, in);
}
else if (version == 2)
{
deserialize(item.scanner, in);
deserialize(item.boxes_overlap, in);
unsigned long num_detectors = 0;
deserialize(num_detectors, in);
item.w.resize(num_detectors);
for (unsigned long i = 0; i < item.w.size(); ++i)
{
deserialize(item.w[i].w, in);
item.w[i].init(item.scanner);
}
}
else
{
throw serialization_error("Unexpected version encountered while deserializing a dlib::object_detector object.");
}
}
// ----------------------------------------------------------------------------------------
// ----------------------------------------------------------------------------------------
// object_detector member functions
// ----------------------------------------------------------------------------------------
// ----------------------------------------------------------------------------------------
template <
typename image_scanner_type
>
object_detector<image_scanner_type>::
object_detector (
)
{
}
// ----------------------------------------------------------------------------------------
template <
typename image_scanner_type
>
object_detector<image_scanner_type>::
object_detector (
const object_detector& item
)
{
boxes_overlap = item.boxes_overlap;
w = item.w;
scanner.copy_configuration(item.scanner);
}