第三天——OpenCV 计算机视觉开发

项目框架

考虑到成本因素,我们可以采用自己的笔记本电脑即可完成项目。
整个项目大致分为:图像采集、人脸截图、将人脸截图上传到百度智能云平台进行比对,返回对比结果 。

初识OpenCV

  • OpenCV 是一个开源的计算机视觉和机器学习软件库,其使用一系列C 语言函数和少量C++类实现,内部实现了很多图像处理和计算机视觉的通用算法;OpenCV可以运行在Linux 系统上,且其轻量、高效所以在嵌入式领域得到广泛的应用;

  • 在线安装

sudo apt-get install libopencv-dev
  • 在线文档
https://opencv.org/

根据帮助文档来编写程序,其中涉及的知识比较多,通过文章写出来有点不太现实,所以下面仅给出完整的程序代码,感兴趣的可以自己实践论证:

#include
#include"opencv2/opencv.hpp"
#include"face.h"

using namespace cv;
using namespace std;
using namespace aip;

int main(){
   VideoCapture cap(0);
  if(!cap.isOpened()){
     cout<<"Camera open failed"< AllFace;
Mat MatFace;
vector JpgFace;
string Base64Face;
Json::Value result;
time_t sec;

for(;;){
  cap>>ColorImage;
  cvtColor(ColorImage,GrayImage,CV_BGR2GRAY);
  equalizeHist(GrayImage,GrayImage);
  Classifier.detectMultiScale(GrayImage,AllFace);
  if( AllFace.size()){
      rectangle(GrayImage,AllFace[0],Scalar(255,255,255));
      MatFace=GrayImage(AllFace[0]);
      imencode(".jpg",MatFace,JpgFace);
      
      Base64Face=base64_encode((char *)JpgFace.data(),JpgFace.size());
      result = client.search(Base64Face,"BASE64","Myself",aip::null);
      
      if(!result["result"].isNull())
      {
         if( result["result"]["user_list"][0]["score"].asInt()>80)
         {
            cout<

程序编译、执行指令分别如下:

g++ cv.cpp -o cv -lopencv_highgui -lopencv_core -lopencv_imgproc -lopencv_objdetect -std=c++11 -lcurl -lcrypto -ljsoncpp
 
 ./cv

下面是程序运行结果截图:

第三天——OpenCV 计算机视觉开发_第1张图片
如想获取完整程序及相关文件包,请关注公号:编程有料 ,后台回复 “人脸考勤 ”

后面会带你体验完整的百度智能云平台的接入过程。

你可能感兴趣的:(物联网项目,opencv,计算机视觉)