【Ubuntu】基于C++实现人脸识别( 九 )


本节课将人脸截取出来,并保存成一个独立的图像 。因为百度云平台对图片格式有要求,必须是常规的格式如.jpg、.jpeg、.png,而程序中得到的人脸截图为.mat格式,所以保存图片时需要转码成相应格式 。
保存为.jpg格式 。用到了.4.9“. High-level GUI and Media I/O”中的“方法”、“方法”来转码 。
//终端编译指令/g++ main.cpp -o main -lopencv_videoio -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_core -lopencv_objdetect -lopencv_imgcodecs//cpp源代码/#include #include "opencv2/opencv.hpp"using namespace std;using namespace cv;int main() {// 打开摄像头//VideoCapture cap(0);VideoCapture cap(0, cv::CAP_V4L2);// 打开(默认的)摄像头0(编译时加上-lopencv_videoio)if(!cap.isOpened()) {// 检查摄像头是否成功打开cout << "Camera open failed!" << endl;return -1;}cout << "Camera open success." << endl;/显示视频-开始/Mat img_color; // 定义彩色图像(注意因为用到了mat,所以编译时加上-lopencv_core)Mat img_gray;// 定义灰度图Mat img_eql;// 定义直方图均衡化后的灰度图// 加载人脸的模型文件(-lopencv_objdetect)CascadeClassifier Classifier("/usr/share/opencv4/haarcascades/haarcascade_frontalface_alt2.xml");vector face_all; // 存储所有脸的方框列表Mat img_face_shot;// 存储人脸截图vector img_face_jpg; // 存储.jpg格式的人脸截图for(;;) {cap >> img_color;// 1.获取一帧彩色图像cvtColor(img_color, img_gray, cv::COLOR_BGR2GRAY);// 2.将彩图转换成灰度图(-lopencv_imgproc)equalizeHist(img_gray, img_eql);// 3.直方图均衡化(-lopencv_imgproc)Classifier.detectMultiScale(img_eql, face_all);// 4.人脸检测if(face_all.size()) {// 5.框出所有的人脸for(int i=0; i
下面是我在开发过程中的终端实际操作,包括解决代码报错过程:
解决报错参考文章:
“/usr/bin/ld: /tmp/:to‘‘ rror: DSO mis”
# 报错1lyl@ubuntu:~/桌面$ vim main.cpp######################################### 更改成最新代码########################################lyl@ubuntu:~/桌面$ g++ main.cpp -o main -lopencv_videoio -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_core -lopencv_objdetect/usr/bin/ld: /tmp/ccyBD5hh.o: undefined reference to symbol '_ZN2cv8imencodeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_11_InputArrayERSt6vectorIhSaIhEERKSB_IiSaIiEE'/usr/bin/ld: /lib/x86_64-linux-gnu/libopencv_imgcodecs.so.4.2: error adding symbols: DSO missing from command linecollect2: error: ld returned 1 exit statuslyl@ubuntu:~/桌面$ g++ main.cpp -o main -lopencv_videoio -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_core -lopencv_objdetect -lopencv_imgcodecslyl@ubuntu:~/桌面$
目前的工作已经完成,后面就要发送给百度云来进行识别 。
第五章 人脸识别-接入百度智能云平台 5.1 人脸库的创建和管理
本节主要是在“百度云平台”创建一个人脸识别的应用,方便后续与之通信 。
主要分成以下三个步骤:
登录百度云人脸识别平台创建人脸识别应用创建人脸库
百度云平台:
注意限制:每秒提交到百度智能云平台的次数不能超过两次,免费调用量1000次/月 。
图5-1 登录百度云人脸识别平台