opencv with C++

目录

OpenCV介绍

C++版本的 OpenCV库安装

OpenCV库的使用示例

OpenCV库里的人体检测功能


OpenCV介绍

OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉机器学习软件库,可以运行在LinuxWindowsAndroidMac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

OpenCV用C++语言编写,它具有C ++,PythonJavaMATLAB接口,并支持Windows,Linux,Android和Mac OS,OpenCV主要倾向于实时视觉应用,并在可用时利用MMX和SSE指令, 如今也提供对于C#、Ch、Ruby,GO的支持。

C++版本的 OpenCV库安装

下载release版本:Releases - OpenCV

从git仓库下载:git clone https://github.com/opencv/opencv.git

本文档下载的是opencv 4.5.5 版本。

进入opencv目录进行编译安装 ,

OPENCV_GENERATE_PKGCONFIG=ON是生成.pc文件,给pkg-config使用。

$ cd opencv
$ mkdir build
$ cmake -DOPENCV_GENERATE_PKGCONFIG=ON ..
$ make
$ make install

opencv 库安装所在目录

库文件:/usr/lib/x86_64-linux-gnu/

头文件:/usr/local/include/opencv4/

OpenCV库的使用示例

根据OpenCV with C++ — OpenCV Guide documentation里的示例显示视频

示例如下:

$ ls
Makefile  opencv_test.cpp  versal.mp4

opencv_test.cpp 如下:

#include <stdio.h>
#include <opencv4/opencv2/opencv.hpp>

int main(int argc, char** argv )
{

    cv::Mat frame;  // variable frame of datatype Matrix
    cv::VideoCapture capture;
    capture.open("versal.mp4");

    for(;;){
        capture>>frame;
        if(frame.empty())
            break;
        cv::imshow("Window", frame);

        if(cv::waitKey(30)>=0)
                break;
    }
    return 0;
}

Makefile:

opencv_test:
	g++ opencv_test.cpp -o opencv_test `pkg-config --libs opencv4` -I/usr/local/include/opencv4/

clean:
	rm -rf opencv_test

编译并运行:

$ make
g++ opencv_test.cpp -o opencv_test `pkg-config --libs opencv4` -I/usr/local/include/opencv4/
$ ls
Makefile  opencv_test  opencv_test.cpp  versal.mp4
$ ./opencv_test

遇到错误:

OpenCV(4.5.5) /home/wq/Project/opencv-4.5.5/modules/highgui/src/window.cpp:1268: error: (-2:Unspecified error) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Cocoa support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function 'cvShowImage'

解决办法:

$ sudo apt-get install libgtk2.0-dev

随后执行opecv_test成功,打开versal.mp4播放界面。

OpenCV库里的人体检测功能

示例代码如下:

$ ls
Makefile  opencv_test.cpp  versal.mp4

 opencv_test.cpp 如下:

#include <stdio.h>
#include <opencv4/opencv2/opencv.hpp>

int main(int argc, char** argv )
{
    int thickness = 2;

    cv::Mat frame;
    cv::VideoCapture capture;

    cv::HOGDescriptor hog;
    std::vector<cv::Rect> foundLocations;

    cv::Point p1(0, 0);
    cv::Point p2(0, 0);

    capture.open("versal.mp4");

    for(;;)
    {
        capture>>frame;
        if(frame.empty())
            break;

        hog.setSVMDetector(hog.getDefaultPeopleDetector());

        hog.detectMultiScale(frame, foundLocations);

        p1.x = cvRound(foundLocations[0].x);
        p1.y = cvRound(foundLocations[0].y);
        p2.x = cvRound(foundLocations[0].x+foundLocations[0].width);
        p2.y = cvRound(foundLocations[0].y+foundLocations[0].height);

        // Drawing the Rectangle
        cv::rectangle(frame, p1, p2, cv::Scalar(255, 0, 0), thickness, cv::LINE_8);

        cv::imshow("Window", frame);

        if(cv::waitKey(30)>=0)
                break;
    }

    return 0;
}

Makefile 如下:

opencv_test:
	g++ opencv_test.cpp -o opencv_test `pkg-config --libs opencv4` -I/usr/local/include/opencv4/

clean:
	rm -rf opencv_test

编译并运行:

$ make
g++ opencv_test.cpp -o opencv_test `pkg-config --libs opencv4` -I/usr/local/include/opencv4/
$ ./opencv_test 

结果实现 能成功检测到人体,并用蓝色长框把人体框起来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值