1. 程式人生 > >目標跟蹤---簡單的實現運動物體檢測(python)(1)

目標跟蹤---簡單的實現運動物體檢測(python)(1)

#基本的運動物體檢測
#計算幀之間的差異,或考慮“背景”幀與其他幀之間的差異
import cv2
import numpy as np

##設定為預設攝像頭
camera = cv2.VideoCapture(0)

#getStructuringElement是獲取常用的結構元素的形狀,MORPH_ELLIPSE是橢圓(包括圓形),後面定義的是大小
es = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(9,4))
kernel = np.ones((5,5),np.uint8)
background = None

while  True:
     ret, frame = camera.read()
     if background is None:#初始化背景,後面的影象均以此為背景,即第一張圖
          background =  cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)###灰度化影象
          background =  cv2.GaussianBlur(background,(21,21),0)###進行模糊處理
          continue# 跳出這個迴圈
     gray_frame = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
     gray_frame = cv2.GaussianBlur(gray_frame,(21,21),0)
##開啟系統預設的攝像頭獲得的視訊影象,並將第一幀設定為整個輸入的背景
#對於每個從該點以後讀取的幀都會計算其與背景之間的差異
     diff = cv2.absdiff(background, gray_frame) #計算背景幀與當前幀的差值
     diff = cv2.threshold(diff,25,255,cv2.THRESH_BINARY)[1]#25為閾值,255為超過閾值被賦予的值
     diff = cv2.dilate(diff,es,iterations = 2)#進行圖片膨脹,iterations為膨脹次數為2,
     #findContours函式計算一幅影象中目標的輪廓,diff.copy()為輸入的二值單通道影象
     # 輪廓CV_RETR_EXTERNAL表示只檢測外輪廓
     image,cnts,hierarchy = cv2.findContours(diff.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)

     for c in cnts:
          if cv2.contourArea(c) < 1500:
               continue
          #c是一個二值圖,boundingRect是矩形邊框函式,用一個最小的矩形,把找到的形狀包起來;
          #x,y是矩形左上點的座標;w,h是矩陣的寬和高
          (x,y,w,h) = cv2.boundingRect(c)
          #rectangle畫出矩形,frame是原圖,(x,y)是矩陣的左上點座標,(x+w,y+h)是矩陣右下點座標
          #(0,255,0)是畫線對應的rgb顏色,2是畫線的線寬
          cv2.rectangle(frame,(x,y),(x+w,y+h),(0,255,0),2)

     cv2.imshow("contours",frame)##顯示輪廓的影象
     cv2.imshow("dif",diff)

     if cv2.waitKey(1000 // 12) & 0xff == ord("q"):##書上原給的是1000/12但是會報錯,改為//後就沒有問題了
          break

cv2.destroyAllWindows( )
camera.release()









相關推薦

目標跟蹤---簡單實現運動物體檢測python1

#基本的運動物體檢測 #計算幀之間的差異,或考慮“背景”幀與其他幀之間的差異 import cv2 import numpy as np ##設定為預設攝像頭 camera = cv2.VideoCapture(0) #getStructuringElement是獲取常用

運動物體檢測論文1

接下來就是我要介紹的論文 Zhou D, Frémont V, Quost B, et al. Moving Object Detection and Segmentation in Urban Environments from a Moving Platform ☆[J]. Im

運動物體檢測論文2

在第之前的章節中,已經提出RIMF來檢測移動畫素。 為了計算RIMF,應首先估算GIMF。 此外,RIMF的不確定性也可以根據自我運動和視差圖不確定性來計算。 Global Image Motion Flow (GIMF)怎麼計算呢?   GIMF用於表示由相機運動引起的

深度學習 --- CNN的變體在影象分類、影象檢測目標跟蹤、語義分割和例項分割的簡介附論文連結

以上就是卷積神經網路的最基礎的知識了,下面我們一起來看看CNN都是用在何處並且如何使用,以及使用原理,本人還沒深入研究他們,等把基礎知識總結完以後開始深入研究這幾個方面,然後整理在寫成部落格,最近的安排是後面把自然語言處理總結一下,強化學習的總結就先往後推一下。再往後是系統的學習一下演算法和資料

OpenCV學習筆記:運動物體檢測跟蹤和繪製曲線運動軌跡

一、簡介本文章的起源是本人在做一個專案,用攝像頭識別筆,根據筆的運動,繪製出其軌跡。主要應用到的方法,有運動物體識別、運動物體檢測,以及繪製運動物體的運動軌跡。1、 運動物體的識別方法很多,主要就是要提取相關物體的特徵,主要分為:        (1)各種色彩空間直方圖,利用

簡單實現angular2組件雙向綁定

exp mpat comment 空間 pri orm ima 調用 NPU 直接獻上代碼 父組件 import { Component, OnInit } from ‘@angular/core‘; @Component({ selector: ‘ngx-inp

Python-OpenCV運動物體檢測

運動物體檢查,在移動目標定位和智慧安防系統中有廣泛的應用,它的實現原理:捕獲連續幀之間的變化情況,將每次捕獲的影象進行對比,然後檢查差值影象中的所有斑塊(顏色相近的地方)。 Demo在實現的過程中,首先需要設定“背景幀”,通過捕獲連續幀,比較“背景幀”與其它幀之間的差異,這種方法檢測結果還是

深度學習在 iOS 上的實踐 —— 通過 YOLO 在 iOS 上實現實時物體檢測

譯者注: 在閱讀這篇文章之前可能會遇到的一些名詞,這裡是解釋(我自己也查了相當多的資料,為了翻譯地儘可能的簡單易懂一些) Metal:Metal 是蘋果在 iOS 8 之後 提供的一種低層次的渲染應用程式程式設計介面,提供了軟體所需的最低層,保證軟體可以執行在不同的影象晶

基於opencv3實現運動物體識別

一:背景減法          對於一個穩定的監控場景而言,在沒有運動目標,光照沒有變化的情況下,視訊影象中各個畫素點的灰度值是符合隨機概率分佈的。由於攝像機在採集影象的過程中,會不可避免地引入噪聲,這些灰度值以某一個均值為基準線,在附近做一定範圍內的隨機振盪,這種場景

簡單實現Redis快取中的排序功能

在實現快取排序功能之前,必須先明白這一功能的合理性。不妨思考一下,既然可以在資料庫中排序,為什麼還要把排序功能放在快取中實現呢?這裡簡單總結了兩個原因:首先,排序會增加資料庫的負載,難以支撐高併發的應用;其次,在快取中排序不會遇到表鎖定的問題。Redis恰好提供了排序功能

Qt實現多執行緒的簡單例子VS2015Professional+Qt5.7.1

這個例子是在參考教材略微改了一下。      主要實現的是單擊開始按鈕啟動數個工作執行緒,工作執行緒數目由一個巨集定義的常數決定,各個執行緒迴圈列印數字0~9,直到按下停止按鈕,終止所有執行緒。

Softmax程式碼實現Python,附測試

import numpy as np import math from matplotlib import pyplot as plt from sklearn import datasets #計算假設的“相對概率”分佈,注意防止指數運算資料溢位 dataset: m*(n+1) the

CCF CSP2018年九月前兩題實現python,201809-1,201809-2

第一題: 這道題還是很容易解決的,一些初學者或者粗心的人需要注意問題所提示的第一個和最後一個數在長度為n的數組裡面分別對應0和n-1。另外,就是CCF CSP要求的標準輸出,是要和樣例一樣的。 下面是

基於R-CNN的物體檢測(轉自 hjimce的專欄

基於R-CNN的物體檢測作者:hjimce一、相關理論本篇博文主要講解2014年CVPR上的經典paper:《Rich feature hierarchies for Accurate Object Detection and Segmentation》,這

簡單實現介面自動化測試(基於python+unittest)

簡介 本文通過從Postman獲取基本的介面測試Code簡單的介面測試入手,一步步調整優化介面呼叫,以及增加基本的結果判斷,講解Python自帶的Unittest框架呼叫,期望各位可以通過本文對介面自動化測試有一個大致的了解。 引言 為什麼要做介面自動化測試? 在當前網際網路產品迭代頻繁的背景下,迴歸測試的

hadoop學習-1mapreduce實現資料過濾、聚合與排序

利用chain mapreduce,依次執行兩個mapreduce Job。第一個Job抽取donor_city(城市名)、total(捐贈金額)欄位,並按照城市名實現捐贈金額聚合,實現資料過濾、聚合;第二個Job,按照捐贈金額排降序。 - 第一個Job Mapper:抽取donor_city(城市名)、to

tensorflow學習之識別單張圖片的實現python手寫數字

假設我們已經安裝好了tensorflow。 一般在安裝好tensorflow後,都會跑它的demo,而最常見的demo就是手寫數字識別的demo,也就是mnist資料集。 然而我們僅僅是跑了它的demo而已,可能很多人會有和我一樣的想法,如果拿來一張數字圖片,如何應用我們訓

走入計算機的第四十天數據庫1

數據庫表 sql creat images character def 計算 rst sqlit 一 什麽是數據庫 數據庫故名思意就是存放數據的地方,是指長期存儲在計算機內有組織可以共享的數據的集合。 數據庫的數據按照一定的數學模型組織,描述和儲存的,具有較小的

弱題循環矩陣1

submit 操作 多少 sub nbsp 要求 printf cheng 輸出 問題 D: 弱題 時間限制: 1 Sec 內存限制: 128 MB提交: 46 解決: 28[提交][狀態][討論版] 題目描述 有M個球,一開始每個球均有一個初始標號,標號範圍為1~

零基礎掌握百度地圖興趣點獲取POI爬蟲python語言爬取基礎篇

region map 基礎 輸入 filter put mark page -h 實現目的:爬取昆明市範圍內的全部中學數據,包括名稱、坐標。 先進入基礎篇,本篇主要講原理方面,並實現步驟分解,為python代碼編寫打基礎。 因為是0基礎開始,所以講得會比較詳細。 如實現目的