首页 > 其他分享 >xxxxhttps://blog.csdn.net/holecloud/article/details/80139297

xxxxhttps://blog.csdn.net/holecloud/article/details/80139297

时间:2023-05-21 22:34:55浏览次数:49  
标签:int double frame blog 80139297 maxRect csdn include RECT

#include "stdafx.h"
#include <opencv2\imgproc\imgproc.hpp>
#include <windows.h>
#include <opencv2/opencv.hpp>
#include <cmath>
#include <iostream>
//#include "DetectPackage.h"
#include <cmath>
using namespace std;
using namespace cv;
int main() {
    VideoCapture cap("G://folder/test.mp4");
    if (!cap.isOpened()) {
        cout << "video not exist!" << endl;
        return -1;
    }
    long FRAMECNT = cap.get(CV_CAP_PROP_FRAME_COUNT);
    Mat frame, mask, maskCp;
    vector<vector<Point>> cnts;
    Rect maxRect;
    const double RECT_HW_RATIO = 1.5;    // 人体长宽比阈值
    const double RECT_AREA_RATIO = 0.008;    // 人体占整个图像最小比例阈值
    const double RECT_AREA_RATIO2 = 0.2;    // 人体占整体图像最大比例阈值
    Ptr<BackgroundSubtractorMOG2> bgsubtractor = createBackgroundSubtractorMOG2();
    bgsubtractor->setHistory(20);
    bgsubtractor->setVarThreshold(100);
    bgsubtractor->setDetectShadows(true);
    bool hasPeople = false;        // 是否有人
    int count = 0;    // 帧数
    int hasPeopleFrameCnt = 0; // 每K帧统计到的有人帧数
    int spaceFrames = 0;        // 每隔125帧统计一次
    const int SPACE_FRAME = 125;
 
    while (++count < FRAMECNT - 10) {
        cap >> frame;
        resize(frame, frame, Size(frame.cols / 4, frame.rows / 4));
        // 背景更新
        bgsubtractor->apply(frame, mask, 0.002);
        // 中值滤波
        medianBlur(mask, mask, 3);
        // 阈值分割,去阴影
        threshold(mask, mask, 200, 255, CV_THRESH_BINARY);
        // 找轮廓
        maskCp = mask.clone();
        findContours(maskCp, cnts, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE);
        vector<Point> maxCnt;
        for (int i = 0; i < cnts.size(); ++i) {
            maxCnt = maxCnt.size() > cnts[i].size() ? maxCnt : cnts[i];
        }
        // 画最大外接矩形
        if (maxCnt.size() > 0) {
            maxRect = boundingRect(maxCnt);
            double rectAreaRatio = (double)maxRect.area() / (frame.cols * frame.rows);
            if ((double)maxRect.height / maxRect.width > RECT_HW_RATIO && rectAreaRatio > RECT_AREA_RATIO &&
                rectAreaRatio < RECT_AREA_RATIO2) {
                rectangle(frame, maxRect.tl(), maxRect.br(), Scalar(0, 255, 0), 2);
                    ++hasPeopleFrameCnt;    
            }
        }
        ++spaceFrames;
        if (spaceFrames >= SPACE_FRAME) {
            if (hasPeopleFrameCnt > SPACE_FRAME / 8) {
                hasPeople = true;
                cout << count << ":有人" << endl;
            }
            else {
                hasPeople = false;
                cout << count << ":无人" << endl;
            }
            hasPeopleFrameCnt = 0;
            spaceFrames = 0;
        }
 
        imshow("frame", frame);
        imshow("mask", mask);
        if (waitKey(10) == 27) {
            break;
        }
    }
    return 0;
};

 

(26条消息) C++ opencv动态行人检测(传统方法)_c++行人检测_holecloud的博客-CSDN博客

标签:int,double,frame,blog,80139297,maxRect,csdn,include,RECT
From: https://www.cnblogs.com/liliczw2209/p/17419338.html

相关文章

  • BLOG-1 (PTA 1~3)
    前言在本阶段的三次题目集中,我们主要涉及了菜单计价程序的设计与实现。这些题目涵盖了点菜订单的处理、菜品价格计算、代点菜功能以及总价的计算等方面的内容。通过完成这些题目,我们可以加深对Java编程语言的理解,熟悉面向对象的设计思想,并应用这些知识解决实际问题。设计与分析......
  • 题目集 1~3 的总结性 Blog
    前言:题目集1~3的知识点、题量、难度等情况如下:知识点:JAVA基础,基础算法,面向对象程序设计题量:共计3道题目难度:题目从易到难,分为三个层次,分别为入门、中等和高级设计与分析:本次Blog重点分析菜单计价系列题目,即题目集2的7-1、7-2以及题目集3的7-1。这三......
  • 欢迎使用CSDN-markdown编辑器
    欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗Ctrl+B斜体Ctrl+I......
  • Blog说明
    较新的博客中的代码会删除所有的省源,namespace,快读和宏定义等CF的题解有时会删去主程序这里给出删除部分,由于本人模板的更新,不保证加上之后的代码可以通过#include<cstdio>#include<cmath>#include<iostream>#include<cstring>#include<algorithm>#include<queue>......
  • 5.18CSDN贪吃蛇
    贪吃蛇 速度不要调很慢会影响判断#include<iostream>#include<windows.h>#include<conio.h>#include<deque>#include<ctime>#include<stdexcept>usingnamespacestd;structSnake{//蛇类结构体charimage;shortx,y;//坐标};classsnakeGame......
  • Typora关联博客园-cnblog
    Typora关联博客园在Typora写完笔记需要上传到博客园时,就会出现图片显示不出来的情况,这个时候就需要考虑将Typora和博客园关联起来,实现联动。实现方案环境准备系统环境:win11软件版本:dotnet-sdk-5.0.408-win-x64下载地址:https://dotnet.microsoft.com/learn/dotnet/hello-wo......
  • Yqw的Blog-2
    目录前言总结之前所涉及到的知识点、题量、难度等情况设计与分析1.菜单计价程序-42.菜单计价程序-53.期中考试踩坑心得改进建议总结前言总结之前所涉及到的知识点、题量、难度等情况虽然这个学期过去大半,但是说实话对Java还是没有什么掌握,全靠eclipse报错修改代码拯救。到现在......
  • BLOG-2
    一、**前言**本次Java大作业是一次非常有意义的学习经历,我们学习了Java中的继承与多态,抽象类与接口,正则表达式,时间类Calendar等知识点,并将它们应用于实际编程中。通过这次大作业,我们不仅巩固了Java基础知识,还学会了如何将这些知识点结合起来进行实际应用。二、**设计与分析**1......
  • Weblogic < 10.3.6 'wls-wsat' XMLDecoder 反序列化漏洞(CVE-2017-10271)
    参考:https://github.com/vulhub/vulhub/blob/master/weblogic/CVE-2017-10271/README.md反弹shellEXP:POST/wls-wsat/CoordinatorPortTypeHTTP/1.1Host:172.31.14.123:7001Accept-Encoding:gzip,deflateAccept:*/*Accept-Language:enUser-Agent:Mozilla/5.0(com......
  • BLOG-2(软件学院)
    一、前言:此次的BLOG-2是关于PTA的第四、五次大作业以及期中考试的题目分析。在PTA第四、五的两次大作业是在菜单三的基础上进行一个功能的增加。而期中考试主要是对知识点对点的测试。PTA菜单四考察了很多错误输入情况,PTA菜单五则是在三的条件下去延伸了菜的一些特色。这两次的......