opencv檢測運動物體

檢測到的所有移動物體中輪廓中找到面積最大的輪廓,并繪制這個輪廓的矩形框。

#include <opencv2/opencv.hpp>
#include <iostream>int main() {// 打開視頻文件或攝像頭cv::VideoCapture capture;capture.open("move3.mp4"); // 打開視頻文件if (!capture.isOpened()) {std::cerr << "Error opening video stream or file" << std::endl;return -1;}// 讀取第一幀作為背景模型cv::Mat background;capture >> background;if (background.empty()) {std::cerr << "Error reading background frame" << std::endl;return -1;}// 將背景轉換為灰度圖并進行高斯濾波以減少噪聲cv::Mat backgroundGray;cv::cvtColor(background, backgroundGray, cv::COLOR_BGR2GRAY);cv::GaussianBlur(backgroundGray, backgroundGray, cv::Size(21, 21), 0);cv::Mat frame, grayFrame, diffFrame, thresholdFrame;while (true) {// 讀取當前幀capture >> frame;if (frame.empty()) {break;}// 將當前幀轉換為灰度圖并進行高斯濾波cv::Mat grayFrame;cv::cvtColor(frame, grayFrame, cv::COLOR_BGR2GRAY);cv::GaussianBlur(grayFrame, grayFrame, cv::Size(21, 21), 0);// 計算當前幀與背景的差異cv::absdiff(backgroundGray, grayFrame, diffFrame);// 對差異圖像進行閾值處理,將小的差異值設置為0,大的差異值設置為255cv::threshold(diffFrame, thresholdFrame, 25, 255, cv::THRESH_BINARY);// 使用形態學操作去除噪聲cv::Mat kernel = cv::getStructuringElement(cv::MORPH_ELLIPSE, cv::Size(3, 3));cv::morphologyEx(thresholdFrame, thresholdFrame, cv::MORPH_OPEN, kernel);// 找到輪廓std::vector<std::vector<cv::Point>> contours;cv::findContours(thresholdFrame, contours, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_SIMPLE);// 找到面積最大的輪廓double maxArea = 0;int maxAreaIndex = -1;for (size_t i = 0; i < contours.size(); ++i) {double area = cv::contourArea(contours[i]);if (area > maxArea) {maxArea = area;maxAreaIndex = i;}}// 在原始幀上繪制最大的矩形框if (maxAreaIndex != -1) {cv::Rect boundingRect = cv::boundingRect(contours[maxAreaIndex]);cv::rectangle(frame, boundingRect, cv::Scalar(0, 0, 255), 2);}// 顯示結果cv::imshow("Frame", frame);cv::imshow("Threshold Frame", thresholdFrame);// 按下ESC鍵退出if (cv::waitKey(30) == 27) {break;}}// 釋放資源并關閉窗口capture.release();cv::destroyAllWindows();return 0;
}

代碼說明

  1. 背景初始化

    • 讀取第一幀作為背景,并將其轉換為灰度圖,同時應用高斯濾波以減少噪聲。
  2. 幀處理

    • 讀取當前幀并將其轉換為灰度圖。
    • 使用 cv::absdiff 計算當前幀與背景的差異。
    • 應用閾值處理,將小的差異值設置為0,大的差異值設置為255。
    • 使用形態學操作去除噪聲。
  3. 輪廓檢測

    • 使用 cv::findContours 找到所有運動物體的輪廓。
    • 遍歷所有輪廓,計算每個輪廓的面積,并找到面積最大的輪廓。
  4. 繪制矩形框

    • 使用 cv::boundingRect 計算最大輪廓的邊界矩形。
    • 使用 cv::rectangle 在原始幀上繪制紅色矩形框,標記面積最大的運動物體。
  5. 結果顯示

    • 顯示原始幀和處理后的閾值幀。

注意事項

  • 閾值調整:閾值可以根據實際場景進行調整,以提高檢測的準確性。
  • 性能優化:對于實時應用,可以考慮優化代碼以提高處理速度。
  • 背景更新:在實際應用中,背景可能會發生變化,因此可能需要定期更新背景模型。

通過以上修改,你的程序應該只會在檢測到的運動物體中繪制面積最大的矩形框。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/87152.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/87152.shtml
英文地址,請注明出處:http://en.pswp.cn/web/87152.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Camera相機人臉識別系列專題分析之十五:人臉特征檢測FFD算法之libcvface_api.so算法API詳細注釋解析

【關注我,后續持續新增專題博文,謝謝!!!】 上一篇我們講了: 這一篇我們開始講: Camera相機人臉識別系列專題分析之十五:人臉特征檢測FFD算法之libcvface_api.so算法API詳細注釋解析 目錄 一、libcvface_api.so算法API詳細注釋解析

圖像擦除論文-2:SmartEraser、Erase Diffusion、OmniEraser

圖像生成模型應用系列——圖像擦除&#xff1a; 圖像擦除論文-1&#xff1a;PixelHacker、PowerPanint等 圖像擦除論文-2&#xff1a;擦除類型數據集構建(1) Erase Diffusion Erase Diffusion: Empowering Object Removal Through Calibrating Diffusion Pathways https://git…

九識無人車陜西運營中心展廳啟幕 打造智能城配物流新標桿

7月1日&#xff0c;九識無人車陜西運營中心展廳正式開業&#xff0c;全國業務版圖再添重要一子。這座展廳是九識在陜西省的首家展廳&#xff0c;由九識第一位正式提車的客戶、首位代理商伙伴孫朋奇先生打造。展廳集產品展示與技術體驗于一體&#xff0c;成為西北地區城配領域自…

AI智能體|扣子(Coze)搭建【沉浸式歷史故事解說視頻】工作流

主包講解歷史對我們的好處&#xff0c;純個人觀點&#xff01; 這個世界是存在一些規律的&#xff0c;很多東西并不能夠通過自己的聰明去創新&#xff0c;去改變的。 無論你怎么樣創新&#xff0c;你都會回到哪個規律中去&#xff0c;比如很多人做一些商業模式的創新&#xff0…

Softhub軟件下載站實戰開發(十):實現圖片視頻上傳下載接口

文章目錄 Softhub軟件下載站實戰開發&#xff08;十&#xff09;&#xff1a;實現圖片視頻上傳下載接口 &#x1f5bc;?&#x1f3a5;系統架構圖核心功能設計 &#x1f6e0;?1. 文件上傳流程2. 關鍵技術實現2.1 雪花算法2.2 文件校驗機制 ?2.3 文件去重機制 &#x1f50d;2.…

[JS逆向] 喜馬拉雅登錄案例 -- 補環境

博客配套代碼發布于github&#xff1a;喜馬拉雅登錄 &#xff08;歡迎順手Star一下?&#xff09; 相關知識點&#xff1a;webpack 補環境 相關爬蟲專欄&#xff1a;JS逆向爬蟲實戰 爬蟲知識點合集 爬蟲實戰案例 逆向知識點合集 此案例目標為逆向成功對應的參數&#xff0c…

大語言模型推理系統綜述

摘要 近年來&#xff0c;隨著 ChatGPT 等服務推動大語言模型&#xff08;LLM&#xff09;的快速普及&#xff0c;一批專門面向 LLM 推理的系統相繼涌現&#xff0c;如 vLLM、SGLang、Mooncake 和 DeepFlow。這些系統設計工作的核心動因是 LLM 請求處理過程中所特有的自回歸特性…

用Firecrawl輕松獲取網站數據,提升AI應用的效率!

&#x1f525; Firecrawl&#xff1a;助力AI應用的強大工具&#xff01; 在數字化信息爆炸的時代&#xff0c;如何高效地從海量網頁中提取有用數據變得尤其重要。Firecrawl的問世&#xff0c;為我們揭開了一種便捷的方法來應對這一挑戰。它不僅能夠將整個網站的數據轉化為適用…

【王陽明代數講義】谷歌編程智能體Gemini CLI 使用指南、架構詳解與核心框架分析

Gemini CLI 使用指南、架構詳解與核心框架分析 Gemini CLI 使用指南、架構詳解與核心框架分析Gemini CLI 使用指南Gemini CLI 架構詳解Gemini CLI 核心框架總結 Gemini CLI 使用指南、架構詳解與核心框架分析 Gemini CLI 使用指南 1. 安裝與配置 環境要求&#xff1a; Node.…

camera調試:安卓添加xml注冊

對接安卓的平臺時&#xff0c;需要注冊對應的camera設備&#xff0c;供安卓標準api進行操作&#xff0c;rk的平臺需要在HAL層配置camera3_profiles.xml文件&#xff0c;適配驅動的信息&#xff0c;進行注冊camera設備。該xml對應的內容很多&#xff0c;很多CTS測試問題都是該文…

使用 Ansys Discovery 為初學者準備幾何結構

介紹 設計幾何體通常會包含一些特征&#xff0c;使其無法直接導入我們的仿真工具&#xff0c;例如 Ansys Mechanical、LS-DYNA、Fluent 等。有些干擾或錯位雖然適合制造&#xff0c;但在我們的仿真工具中卻會造成問題。有時&#xff0c;一些小特征&#xff08;例如孔或圓角&am…

推客系統全棧開發指南:從架構設計到商業化落地

一、推客系統概述 推客系統&#xff08;TuiKe System&#xff09;是一種結合社交網絡與內容分發的創新型平臺&#xff0c;旨在通過用戶間的相互推薦機制實現內容的高效傳播。這類系統通常包含用戶關系管理、內容發布、智能推薦、數據分析等核心模塊&#xff0c;廣泛應用于電商…

大數據開發實戰:如何做企業級的數據服務產品

1.背景 數據服務通常以解決方案的形式進行組織&#xff0c;面向一個應用場景的所有數據需求或數據內容可以通過一個解決方案進行封裝&#xff0c;統一對外服務。一個數據需求或數據接口以一個數據服務實例的形式存在于解決方案之下。 下游消費方可以通過統一API進行數據消費&…

基于IndexTTS的零樣本語音合成

IndexTTS 項目采用模塊化設計&#xff0c;將 BPE 文本編碼、GPT 單元預測、dVAE 語音特征抽取和 BigVGAN 音頻生成串聯為完整的語音合成流程。系統通過統一的配置文件和模型目錄規范&#xff0c;實現高效的文本到語音轉換&#xff0c;支持命令行與 Web 界面雙模式操作&#xff…

基于go-zero的短鏈生成系統

go-zero框架 gozero&#xff08;又稱go-zero&#xff09;是一款由知名開發者kevwan設計的Golang微服務框架&#xff0c;專注于高性能、低延遲和易用性。其核心目標是簡化分布式系統的開發&#xff0c;提供開箱即用的工具鏈&#xff0c;涵蓋API網關、RPC服務、緩存管理、數據庫…

Linux-修改線上MariaDB服務端口號

準備工作&#xff08;很重要&#xff01;&#xff01;&#xff01;&#xff09;&#xff1a; 提前做好Linux服務器快照 提前做好數據庫數據備份 1. 修改配置文件 首先&#xff0c;我們需要找到MariaDB的配置文件。通常情況下&#xff0c;這個文件位于以下位置&#xff1a;…

Spring Cloud 微服務(負載均衡策略深度解析)

&#x1f4cc; 摘要 在微服務架構中&#xff0c;負載均衡是實現高可用、高性能服務調用的關鍵機制之一。Spring Cloud 提供了基于客戶端的負載均衡組件 Ribbon&#xff0c;結合 Feign 和 OpenFeign&#xff0c;實現了服務間的智能路由與流量分配。 本文將深入講解 Spring Clo…

HTML/CSS基礎

1.html:超文本標記語言。它是一種標識性的語言&#xff0c;非編程語言&#xff0c;不能使用邏輯運算。通過標簽將網絡上的文本格式進行統一&#xff0c;使用分散網絡資源鏈接為一個邏輯整體&#xff0c;屬于標記語言。 超文本&#xff1a;就是指頁面內可以包含圖片&#xff0…

C# 事件驅動編程的核心:深度解析發布者_訂閱者模式

適用場景&#xff1a;GUI交互、消息隊列、微服務通信等需要解耦事件生產與消費的系統 &#x1f9e9; 模式核心組件解析 發布者&#xff08;Publisher&#xff09; 作用&#xff1a;定義事件并管理訂閱者列表關鍵行為&#xff1a; 提供和-運算符注冊/注銷訂閱者通過Invoke()方…

華為云Flexus+DeepSeek征文 | 從零開始搭建Dify-LLM應用開發平臺:華為云全流程單機部署實戰教程

華為云FlexusDeepSeek征文 | 從零開始搭建Dify-LLM應用開發平臺&#xff1a;華為云全流程單機部署實戰教程 前言一、華為云Dify-LLM平臺介紹1. Dify-LLM解決方案簡介2. Dify-LLM解決方案地址3. Dify-LLM單機架構介紹4. 預估成本說明 二、華為云Maas平臺介紹1. 華為云ModelArts …