c++ opencv 脸部样本提取并保存

**
这是一个打开摄像头录入人脸并保存在指定文件夹的小demo。
使用方法:

**
./Get_faceSamples [dirname/] [samples_number]

**

C++ code

**

/*************************************************************************
    > File Name: Get_faceSamples.cpp
    > Author: jiang
    > Mail: [email protected] 
    > Created Time: 2019年3月12日 星期三 15时19分18秒
 ************************************************************************/
//使用方法             ./Get_faceSamples [文件夹/] [样本数量]
#include
#include
#include

#include   
#include   
using namespace std;

int main(int argv,char **inname)
{
	if(argv <= 1)
		return 1;
	cv::CascadeClassifier face_cascade;
    vector faceRect;           // all functions share
	if(!face_cascade.load("/home/jiang/Repositories/FaceDeal_Class/haarcascade_frontalface_alt.xml"))
     	{
             cout << "Load frontalface_alt.xml failed!" << endl;
             return 0;
	}
    	char* name = inname[1];   //"/yj/"
	int len_name = strlen(name);
	if(name[len_name - 1] != '/')
		return 1;
	int len_num = strlen(inname[2]);
	int NUM = 100;
	if(argv > 1){
		NUM = 0;
		for(int k = 0;k < len_num;k++){
			NUM += pow(10,len_num-1-k)*(inname[2][k] - '0');             // pow(a,b) a^b
			cout<> img;
	while(1)
	{
		cap >> img;
		cv::cvtColor(img,image_gray,CV_BGR2GRAY);
        	cv::equalizeHist(image_gray,image_gray);
		face_cascade.detectMultiScale(image_gray, faceRect, 1.2, 2, 0 | CV_HAAR_SCALE_IMAGE, cv::Size(30, 30));
		for(size_t i = 0;i < faceRect.size();i ++){
		if(i > 0)
			continue;
                count ++;
                rectangle(img, faceRect[i], cv::Scalar(0, 0, 255), 1);  //画出识别的face
                if(count%20){
       		    cout <

**

makefile文件:

**

CC = g++
BOOSTLIB = -std=c++11 -pthread

LIB = $(shell pkg-config --libs opencv)
INC = $(shell pkg-config --cflags opencv)
SRCFILE = Get_faceSamples.cpp
DEBUGFLG=
all:
		$(CC) $(SRCFILE) $(DEBUGFLG) $(INC) $(BOOSTLIB) $(LIB) -o Get_faceSamples
clean:
		rm -rf Get_faceSamples

你可能感兴趣的:(学习记录)