前景提取(1)基於幀差的背景減除法
最近接觸移動偵測專案,其對應的原理主要是背景建模,而背景建模方法眾多,常見的如幀差法、背景減除法、codebook、Vibe、GMM等。
前景提取的步驟如下:
#include "opencv2/opencv.hpp"
using namespace cv;
using namespace std;
void updateBG(Mat src, Mat &dst, double alpha);
void drawRect(Mat &src, Mat mask);
void main()
{
VideoCapture cap("E:\\Database\\768x576.avi" );
if (!cap.isOpened())
return;
Mat frame, gray_frame;
Mat BgImg, FrImg_src, FrImg;
Mat BgImg_32, FrImg_src_32, FrImg_32;
bool firstflag = true;
while (1)
{
cap >> frame;
if (frame.empty())
return;
if (firstflag)
{
cvtColor(frame, BgImg, CV_BGR2GRAY);
BgImg.convertTo(BgImg_32, CV_32FC1); //BgImg、FrImg、FrImg_src都已經轉換為CV_32FC1.
firstflag = false;
FrImg_32 = BgImg_32.clone();
FrImg_src_32 = BgImg_32.clone();
}
else
{
cvtColor(frame, gray_frame, CV_BGR2GRAY);
gray_frame.convertTo(gray_frame, CV_32FC1);
absdiff(gray_frame, BgImg_32, FrImg_src_32);
threshold(FrImg_src_32, FrImg_32, 50 , 255.0, CV_THRESH_BINARY);
updateBG(gray_frame, BgImg_32, 0.005);
BgImg_32.convertTo(BgImg, CV_8UC1);
FrImg_32.convertTo(FrImg, CV_8UC1);
FrImg_src_32.convertTo(FrImg_src, CV_8UC1);
drawRect(frame, FrImg);
imshow("SRC", frame);
imshow("BG", BgImg);
imshow("FG", FrImg);
imshow("FG_Src", FrImg_src);
waitKey(10);
}
}
}
//dst = dst*(1-alpha) + src*alpha
void updateBG(Mat src, Mat &dst, double alpha)
{
for (int i = 0; i < src.rows;i++)
{
float* ptr1 = src.ptr<float>(i);
float* ptr2 = dst.ptr<float>(i);
for (int j = 0; j < src.cols; j++)
{
ptr2[j] = ptr1[j] * alpha + (1 - alpha)*ptr2[j];
}
}
}
void drawRect(Mat &src, Mat mask)
{
vector<vector<Point>> contours;
findContours(mask, contours, CV_RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);
for (int i = 0; i < contours.size(); i++)
{
Rect r(0, 0, 0, 0);
if (contourArea(contours[i])>100)
{
int x_min = 1000;
int x_max = 0;
int y_min = 1000;
int y_max = 0;
//找最大外接矩形
for (int j = 0; j < contours[i].size(); j++)
{
x_min = x_min > contours[i][j].x ? contours[i][j].x : x_min;
x_max = x_max < contours[i][j].x ? contours[i][j].x : x_max;
y_min = y_min > contours[i][j].y ? contours[i][j].y : y_min;
y_max = y_max < contours[i][j].y ? contours[i][j].y : y_max;
}
r.x = x_min;
r.y = y_min;
r.width = x_max - x_min;
r.height = y_max - y_min;
}
rectangle(src, r, Scalar(0, 255, 0), 2, 8);
}
}
效果還是很不錯的,可以有效自適應光照的變化。
相關推薦
前景提取(1)基於幀差的背景減除法
最近接觸移動偵測專案,其對應的原理主要是背景建模,而背景建模方法眾多,常見的如幀差法、背景減除法、codebook、Vibe、GMM等。 前景提取的步驟如下: #include "opencv2/opencv.hpp" using namespace
基於qml創建最簡單的圖像處理程序(1)-基於qml創建界面
cep font mes quit vid www 習慣 image ble 為什麽使用QT,包括進一步使用QML?兩個主要原因,一是因為我是一個c++程序員,有語言使用慣性;二是我主要做圖像處理方面工作,使用什麽平臺對於我來說不重要,我只需要在不同平臺上面能
(1)基於centos7.2的docker安裝
環境安裝 註意 地址 應用程序 yum try 操作系統 一個 .com 註:此記錄僅為自己學習docker測試,也是主要參考他人文章,不同環境安裝方式不一 一、在 centos7.2上安裝 Docker 最小化安裝centos7.2操作系統 使用系統自帶的源即可安裝 #y
EOS Dapp開發(1)-基於Docker的開發環境搭建
rbo err 通過命令 plugin cat cti nec docker 反饋 隨著EOS主網的上線,相信基於EOS的Dapp開發會越來越多,查閱了很多資料相關的開發資料都不是很多,只能自己摸索,按照網上僅有的幾篇教程,先git clonehttps://github.
Caffe實現多標籤影象分類(1)——基於Python介面實現多標籤影象分類(VOC2012)
1.前言 Caffe可以通過LMDB或LevelDB資料格式實現影象資料及標籤的輸入,不過這隻限於單標籤影象資料的輸入。由於研究生期間所從事的研究是影象標註領域,在進行影象標註時,每幅影象都是多標籤的,因此在使用Caffe進行遷移學習時需要實現多標籤影象資料
openshift/origin學習記錄(1)——基於二進位制檔案的安裝(單機版)
先決條件 開啟SELINUX 官方文件推薦開啟SELINUX,否則會導致安裝失敗。 修改/etc/selinux/config SELINUX=enforcing SELINUXTYPE=targeted 安裝docker # y
AM335X 串列埠驅動學習(1)-基於linux3.8核心
學習串列埠驅動,先從資料結構入手吧。串列埠驅動有3個核心資料結構: (/drivers/tty/serial/omap-serial.c) - UART特定的驅動程式結構定義:struct uart_driver serial_omap_reg; - U
Socket網路程式設計(1) ———— 基於TCP協議的客戶-伺服器socket例項
Socket網路程式設計(1) ———— 基於TCP協議的客戶-伺服器socket例項 1、TCP網路程式設計架構 2、程式碼段 伺服器: #include <stdio.h> #include <stdlib.h&
理解GBDT演算法(二)——基於殘差的版本
GBDT演算法有兩種描述思路,一個是基於殘差的版本,一個是基於梯度gradient的版本。這篇我們先說說基於殘差的版本。 這篇我們再總結一個幾個注意點: 這個版本的核心思路:每個迴歸樹學習前面樹的殘差,並且用shrinkage把學習到的結果大步變小步,
音訊訊號特徵提取(1):短時特徵之短時能量、短時功率、短時過零率
特徵提取(Feature Exaction)的重要性,就不用多說了。對於音訊訊號,按時間解析度、按區域性or全域性的觀念、持續時間長短,或者愛怎麼講怎麼講,特徵可分為長期(long-term)、中期(mid-term)、短期(short-term),也可以叫短時特徵。術語翻譯
MATLAB(1)基於遺傳演算法解決最優化問題及相應的MATLAB遺傳工具箱使用
對於取最小值的最優化問題,遺傳演算法借鑑生物遺傳現象使具有一定數量的候選解的種群向更好的解進化,該方法是通過種群進化,使得適應度函式代入估計引數後達到最值來得到最優解。借鑑生物種群的進化,遺傳演算法先隨機產生一組初始解,作為初始種群,以數值解為例,這些解都是通過二進位制程式碼儲存在計算機中,類似於染
shiro教程(1)-基於url許可權管理
一、 許可權管理 1.1 什麼是許可權管理 基本上涉及到使用者參與的系統都要進行許可權管理,許可權管理屬於系統安全的範疇,許可權管理實現對使用者訪問系統的控制,按照安全規則或者安全策略控制使用者可以訪問而且只能訪問自己被授權的資源。 許可權管理包括使用者身份認證和授權兩部分
服務(1)====一個lamp的腳本以及基於lamp安裝wordpress
服務lamp word press博客#!/bin/bash #部署一個LAMP的環境 #文檔整理人:dingxue #整理日期:2017-10-6 #提取部署好yum環境,也可以使用網絡yum操作 #說明:本文檔部署環境的機器是:Linux redhat_6.5_x64 #請將所需的源
前端基於react,後端基於.net core2.0的開發之路(1) 介紹
tco ioc logs asp webpack 路由 src 部署 關鍵字 文章提綱目錄 1.前端基於react,後端基於.net core2.0的開發之路(1) 介紹 2.前端基於react,後端基於.net core2.0的開發之路(2) 開發環境的配置,
項目總結------基於龍尚芯片的通話短信設計(1)
龍尚 at 通話 一、常用網絡類型網絡描述相關通訊技術GSM移動聯通2GGSM,GPRS,EGPRS (EDGE)CDMA電信2GCDMATDS-CDMA移動3GTDS-CDMA,TDS-HSDPA,TDS-HSUPA,TDS-HSPA(HSDPA and HSUPA)WCDMA聯通3GWCDMA,H
基於 DirectX11 的 MMDViewer 03-渲染管線(1)
present esc ren 調用 param directx11 回調函數 hicon 文章 準備工作: 開始搭建框架之前,你需要確保已經進行了 D3D 開發環境的搭建,相關教程可以閱讀這篇文章。不了解 DirectX11 的人,這個作者有關 Direc
京東金融大數據競賽豬臉識別(1)-從視頻提取圖像
京東金融 豬臉識別 視頻提取 圖像幀 2017年11月的京東金融大數據競賽參與人數最多的是豬臉識別的算法比賽,參加整個大數據比賽的有四千多人,而豬臉識別算法組就有一千多人。可見,搞圖像識別的的人很多啊。想要提升自己價值的小夥伴們,向語音、文本、機器人等領域進發吧,有了機器學習的基礎,入門這些領
基於Tomcat的JSP 詳解(1)—— 概述
normal pad san borde orm ace text pin style 們使用。 一.為什麽使用JSP 下面基於Tomcat的JSP 詳解(1)—— 概述
基於Android平臺的圖書管理系統的制作(1)
teacher stat load over sta ews 來講 androi 管理系 在學習了郭神的第一行代碼前半段之後,想通過一次實踐來完成對已學知識的鞏固。於是碼下了這個圖書管理系統客戶端。 IDE Android studio,語言 JAVA、XML; 在剛開始設
熟練使用Lua(四)面向物件:基於table的面向物件實現(1)
轉:https://www.cnblogs.com/yao2yaoblog/p/6433553.html c++和java語言機制中本身帶有面向物件的內容,而lua設計的思想是超程式設計,沒有面向物件的實現。 但是利用lua的元表(matetable)機制,可以實現面向物件。要講清楚怎樣