【计算机视觉】MTCNN基于NCNN的测试过程

前言

操作过程

NCNN:

https://github.com/Tencent/ncnn/wiki/how-to-build#build-for-linux-x86;

vector初始化:
int num[4] = { 1, 4, 3, 2 };
int numLength = sizeof(num) / sizeof(num[0]);
vector<int> nums(num, num + numLength);  //使用数组初始化向量
Q:
make[2]: *** No rule to make target 'ncnn/src/libncnn.a', needed by 'mtcnn'.  Stop.
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/mtcnn.dir/all' failed

A:
No rule to make target `XXX'.
No rule to make target ` XXX ', needed by `yyy'.
无法为重建目标“XXX”找到合适的规则,包括明确规则和隐含规则。
修正这个错误的方法是:在Makefile中添加一个重建目标的规则。其它可能导致这些错误的原因是Makefile中文件名拼写错误,或者破坏了源文件树(一个文件不能被重建,可能是由于依赖文件的问题)。
 
仔细检查之后发现是文件路径不对;需要将libncnn.a文件复制到需要的文件目录;
cmake之后需要将./MTCNN_cpuimage/ncnn/build/src目录下的libncnn.a文件复制到./MTCNN_cpuimage/build/ncnn/src目录下,才可以正常make编译;
 
 
Q:
/home/rjzheng/uisee/code/MTCNN/MTCNN_cpuimage/src/main.cpp: In function ‘void saveImage(const char*, int, int, int, unsigned char*)’:
/home/rjzheng/uisee/code/MTCNN/MTCNN_cpuimage/src/main.cpp:57:20: error: ‘browse’ was not declared in this scope
     browse(saveFile);

A:
static函数的定义位于头文件中,在main文件中调用,这种可以直接调用吗???我将该函数直接添加到main文件中可以编译通过,这可以证明该函数再头文件中不能直接被拿来调用;
 

struct Bbox {
    float score;
    int x1;
    int y1;
    int x2;
    int y2;
    float area;
    float ppoint[10];
    float regreCoord[4];
};

 运行

$./mtcnn ../models/ ../sample.jpg 

参考

1. MTCNN人脸检测 附完整C++代码

2. https://github.com/cpuimage/MTCNN

3. NCNN_github;

4. NCNN_Build for Linux x86;