栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

opencv with C++

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

opencv with C++

目录

OpenCV介绍

C++版本的 OpenCV库安装

OpenCV库的使用示例

OpenCV库里的人体检测功能


OpenCV介绍

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

OpenCV用C++语言编写,它具有C ++,Python,Java和MATLAB接口,并支持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 
#include 

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 
#include 

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

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

    cv::HOGDescriptor hog;
    std::vector 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 

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/932087.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号