一、人脸识别代码模块
#include "face.h"
using namespace std;
using namespace cv;
using namespace aip;
int main()
{
VideoCapture cap(0);// open the default camera, 0--The number of camera
if(!cap.isOpened())// check if we succeeded
{
cout <<" camera open failed!" << endl;
return -1;
}
cout << "camera open success!" << endl;
Mat img;
Mat grayImag;
Mat equalizeImag;
CascadeClassifier classifier("/usr/share/opencv/haarcascades/haarcascade_frontalface_alt2.xml");//class
vector<Rect> allFace;//the list of face
Mat faceImag;
vector<uchar> jpgBuf;
std::string app_id = "43368035";//引入百度智慧云,需要id、api_key、secret_key(可在百度智慧云上注册,下载)
std::string api_key = "ttIUquP6W3aPMEGmx91nIerY";
std::string secret_key = "a8gawX0cVKYGalGepfIHLyWUeAPxastt";
aip::Face client(app_id, api_key, secret_key);
std::string base64Imag;
Json::Value result;
for(;;)
{
cap >> img; //get a new frame camera
cvtColor(img,grayImag, CV_BGR2GRAY);//图片黑白化
equalizeHist(grayImag,equalizeImag);//调节背景与人脸区别,易采集人脸
classifier.detectMultiScale(equalizeImag,allFace);//把采集到的图像传给linux系统自带的人脸检测
if(allFace.size())
{
rectangle(equalizeImag, allFace[0],Scalar(255,255,0));//blue, gree,red,用矩形框把人脸给框起来,设置矩形框的颜色
faceImag = equalizeImag(allFace[0]);
imencode(".jpg",faceImag,jpgBuf);//对采集到的图像进行编码,从Mat格式转化成jpg形式,
base64Imag = base64_encode((char *)jpgBuf.data(), jpgBuf.size());//对于百度智慧云,只识别base64格式图片,所以要再次转换
result = client.search(base64Imag, "BASE64", "student",aip::null);//百度智慧云人脸识别中进行搜索
cout << result << endl;
}
imshow ("video",equalizeImag);/* "video"--name of the window,
img--image to be show;*/
waitKey(42); // delay 42s
}
return(0);
}
二、linux系统下载模块
linux系统下引入智慧云需要下载SDK,以及其他数据库,具体链接如下:1.https://cloud.baidu.com/doc/FACE/s/Uk37c1r11
2.linux系统安装安装依赖库libcurl(需要支持https) openssl jsoncpp
sudo apt-get install libcurl4-openssl-dev
sudo apt-get install openssl
sudo apt-get install libjsoncpp-dev
3.对SDK下的文件aip-cpp-sdk-4.16.6中的face.h进行修改
std::string _face_search = "https://aip.baidubce.com/rest/2.0/face/v3/search";
4.运行程序:
g++ main.cpp -o main -lopencv_highgui -lopencv_core -lopencv_imgproc -lopencv_objdetect -std=c++11 -lcurl -lcrypto -ljsoncpp
./main