• opencv__配置


    本文内容的主要组成部分:

      1.opencv简介

      2.搭建环境介绍

      3.opencv配置

      4.简单测试配置效果

      5.总结

    1.opencv简介

    OpenCV的全称是:Open Source Computer Vision Library。OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

    2.搭建环境介绍

    操作系统:

    Windows 10 专业版 64位

    IDE:

    Visual Studio 2013

    opencv:

    opencv-3.1.0(http://opencv.org/downloads.html)

    3.opencv配置

     3.1 配置系统变量

      E:opencv-3.1.0opencvuildx64vc12in

     3.2 配置vs

      ①新建一个项目,在源文件中新建一个空文件,右键属性管理器,点击属性,进行Microsoft.Cpp.x64.user 操作

      ②选择VC++目录,在包含目录添加以下路径

        E:opencv-3.1.0opencvuildinclude

        E:opencv-3.1.0opencvuildincludeopencv

        E:opencv-3.1.0opencvuildincludeopencv2

      ③选择VC++目录,在库目录中添加以下路径

        E:opencv-3.1.0opencvuildx64vc12lib

      ④选择链接器--输入,添加

        opencv_world310d.lib

    配置备注:

      3.1配置系统变量

        环境变量分为用户变量和系统变量,用户变量只为当前用户可用,系统变量全部用户都可以使用。

      3.2配置vs

        ①属性管理器有4种,如图所示

          

        ②可以根据自己常用的习惯,分别对上面四种进行配置

        ③如果配置的是Debug|x64或者Debug|Win32

          链接器--输入,添加opencv_world310d.lib

         如果配置的是Release|x64或者Release|Win32

          链接器--输入,添加opencv_world310.lib

    4.简单测试配置效果

      上述操作都完成后,以后写一个“hello,world”来测试一下opencv配置的成功与否

      4.1测试打开一张图片

        ①测试代码:

    #include <opencv2/opencv.hpp>
    using namespace std;

    #pragma comment(linker, "/subsystem:"windows" /entry:"mainCRTStartup"")

    int main()
    {
    const char *pstrImageName = "2.jpg";
    const char *pstrWindowsTitle = "OpenCV第一个程序(http://blog.csdn.net/MoreWindows)";

    //从文件中读取图像
    IplImage *pImage = cvLoadImage(pstrImageName, CV_LOAD_IMAGE_UNCHANGED);

    //创建窗口
    cvNamedWindow(pstrWindowsTitle, CV_WINDOW_AUTOSIZE);

    //在指定窗口中显示图像
    cvShowImage(pstrWindowsTitle, pImage);

    //等待按键事件
    cvWaitKey();

    cvDestroyWindow(pstrWindowsTitle);
    cvReleaseImage(&pImage);
    return 0;
    }

        ②测试结果:

      4.2测试识别人脸

        ①测试代码:

    #include <opencv2/opencv.hpp>
    #include <cstdio>
    #include <cstdlib>
    #include <Windows.h>
    using namespace std;

    const char *pcascadeName = "E:\opencv-3.1.0\opencv\sources\data\haarcascades_cuda\haarcascade_frontalface_alt.xml";
    const char *pImageName = "4.jpg";
    void DetectAndMark();

    int main(int argc, const char** argv)
    {
    DetectAndMark();
    return 0;
    }

    void DetectAndMark()
    {
    // load the Haar classifier
    CvHaarClassifierCascade *pHaarClassCascade;
    pHaarClassCascade = (CvHaarClassifierCascade*)cvLoad(pcascadeName);

    //load the test image
    IplImage *pSrcImage = cvLoadImage(pImageName, CV_LOAD_IMAGE_UNCHANGED);
    IplImage *pGrayImage = cvCreateImage(cvGetSize(pSrcImage), IPL_DEPTH_8U, 1);
    if (pSrcImage == NULL || pGrayImage == NULL)
    {
    printf("can't load image! ");
    return;
    }
    cvCvtColor(pSrcImage, pGrayImage, CV_BGR2GRAY);

    if (pHaarClassCascade != NULL && pSrcImage != NULL && pGrayImage != NULL)
    {
    const static CvScalar colors[] =
    {
    CV_RGB(0, 0, 255),
    CV_RGB(0, 128, 255),
    CV_RGB(0, 255, 255),
    CV_RGB(0, 255, 0),
    CV_RGB(255, 128, 0),
    CV_RGB(255, 255, 0),
    CV_RGB(255, 0, 0),
    CV_RGB(255, 0, 255)
    };

    CvMemStorage *pcvMemStorage = cvCreateMemStorage(0);
    cvClearMemStorage(pcvMemStorage);

    //detect the face
    int TimeStart, TimeEnd;
    TimeStart = GetTickCount();
    CvSeq *pcvSeqFaces = cvHaarDetectObjects(pGrayImage, pHaarClassCascade, pcvMemStorage);
    TimeEnd = GetTickCount();

    printf("the number of faces: %d Spending Time: %d ms ", pcvSeqFaces->total, TimeEnd - TimeStart);

    //mark the face
    for (int i = 0; i <pcvSeqFaces->total; i++)
    {
    CvRect* r = (CvRect*)cvGetSeqElem(pcvSeqFaces, i);
    CvPoint center;
    int radius;
    center.x = cvRound((r->x + r->width * 0.5));
    center.y = cvRound((r->y + r->height * 0.5));
    radius = cvRound((r->width + r->height) * 0.25);
    cvCircle(pSrcImage, center, radius, colors[i % 8], 2);
    }
    cvReleaseMemStorage(&pcvMemStorage);
    }

    const char *pstrWindowsTitle = "FaceDetect Demo";
    cvNamedWindow(pstrWindowsTitle, CV_WINDOW_AUTOSIZE);
    cvShowImage(pstrWindowsTitle, pSrcImage);

    cvWaitKey(0);

    cvDestroyWindow(pstrWindowsTitle);
    cvReleaseImage(&pSrcImage);
    cvReleaseImage(&pGrayImage);
    }

        ②测试结果:

    5.总结

      ①总结opencv的配置大致就是这样,本文不是从0开始,一步一截图,根据自己的理解,将关键的必要步骤罗列出来;

      ②从最后一张图片可以看到,使用opencv默认的特征值去识别人脸,有一定误差:有的人脸没有识别出来,有的识别出来但不是人脸

      ③上述两段测试代码,为网友提供,并非本人所写

      ④如果后续还要进行人脸识别,可以考虑修改人脸识别的特征值,或者采取别的算法、方法

      ⑤由于水平有限,如果不当之处请批评指正

  • 相关阅读:
    css换行
    VC include 路径解析 冷夜
    DirectxDraw学习笔记 冷夜
    winmain窗口代码 冷夜
    DirectDraw 常用功能代码记录 冷夜
    C/C++ 内存分配方式,堆区,栈区,new/delete/malloc/free 冷夜
    BMP文件结构 冷夜
    管道流
    打印流
    字符编码
  • 原文地址:https://www.cnblogs.com/kinghero/p/5334297.html
Copyright © 2020-2023  润新知