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

项目框架

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

初识OpenCV

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

  • 在线安装

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

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

#include<iostream>
#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"<<endl;
     return 0;
}
cout<<"Camera open success"<<endl;

CascadeClassifier Classifier("/usr/share/opencv/haarcascades/haarcascade_frontalface_alt2.xml");

// 设置APPID/AK/SK
    std::string app_id = "24742766";
    std::string api_key = "9lLn4zkodUWDttPcYKSk6D77";
    std::string secret_key = "YOgOQfBqsVE81dsyBb55NCnjGYlIkrry";

    aip::Face client(app_id, api_key, secret_key);

Mat ColorImage;
Mat GrayImage;
vector<Rect> AllFace;
Mat MatFace;
vector<uchar> 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<<result["result"]["user_list"][0]["user_id"]<<endl;
            sec=time(NULL);
            cout<<ctime(&sec)<<endl;
            putText(GrayImage,result["result"]["user_list"][0]["user_id"].asString(),Point(0,50),FONT_HERSHEY_SIMPLEX,1,Scalar(255,100,100));
            putText(GrayImage,ctime(&sec),Point(0,100),FONT_HERSHEY_SIMPLEX,1,Scalar(255,100,100));
         }
      }
  }
  imshow("23practice",GrayImage);

  waitKey(40);
}

return 0;

}

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

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

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

在这里插入图片描述
如想获取完整程序及相关文件包,请关注公号:编程有料 ,后台回复 “人脸考勤 ”

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: OpenCV 4.5计算机视觉开发实战是一本基于VC的实用教材,主要介绍了OpenCV计算机视觉领域的应用和开发,适合开发人员、学生和研究者深入学习和应用计算机视觉技术。 本书主要介绍OpenCV库的基本知识,包括图像和视频处理、特征提取、计算机视觉算法和应用等。此外,书中还提供了大量的代码示例和实战案例,可帮助读者更好地理解和掌握OpenCV技术。 在本书的学习过程中,读者需要了解一些基本的计算机视觉知识和C++编程基础,同时需要了解Visual Studio编译器和OpenCV库的基础知识。 总之,本书是一本非常实用的计算机视觉开发教材,能够让读者深入了解OpenCV技术,并掌握如何使用该技术开发实用的计算机视觉应用程序。 ### 回答2: 《OpenCV 4.5计算机视觉开发实战(基于VC)pdf》是一本关于计算机视觉开发的实践指南,针对OpenCV 4.5版本进行讲解。OpenCV是一个开源的计算机视觉库,通过使用该库的各种功能和算法,开发者可以实现从图像处理到目标检测、跟踪和识别等多种计算机视觉任务。 这本书以基于VC(Visual C++)的开发环境为例,介绍了如何使用OpenCV库进行图像处理和计算机视觉开发。书中包括了基本的图像处理操作,如图像加载、保存、缩放、旋转和滤波等,并且讲解了如何使用OpenCV的特征检测算法,如SIFT、SURF和ORB等。 此外,本书还介绍了如何进行目标检测和跟踪,包括使用Haar特征级联分类器和HOG特征+SVM分类器进行物体检测,以及使用卡尔曼滤波器进行物体跟踪。另外,书中还包含了人脸检测和识别的内容,包括使用人脸级联分类器和特征描述子进行人脸检测,以及使用人脸识别算法进行人脸识别。 总之,这本书通过实例和案例的详细讲解,从基本的图像处理到高级的目标检测和人脸识别等计算机视觉任务,帮助读者掌握OpenCV开发技巧和实践经验。通过学习这本书,读者可以快速入门OpenCV开发,从而在计算机视觉领域有更深入的实践和应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kuchin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值