日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

【Python】监控视频中运动目标检测的代码实现及效果展示

發布時間:2025/3/21 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Python】监控视频中运动目标检测的代码实现及效果展示 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

0、介紹

基于python,使用opencv庫函數,實現監控視頻中的運動目標檢測,Mark一下!

干擾性和靈敏度的權衡,可通過調節代碼中的參數(高斯模糊核、面積閾值、幀差間隔等)進行設置。

?

1、代碼

以下代碼親測可直接運行。?

import cv2vc = cv2.VideoCapture("C:\\Users\\jason\\Desktop\\video.MP4") # 讀入視頻文件 # vc = cv2.VideoCapture("C:/Users/jason/Desktop/152821AA.MP4")rval, firstFrame = vc.read() firstFrame = cv2.resize(firstFrame, (640, 360), interpolation=cv2.INTER_CUBIC) gray_firstFrame = cv2.cvtColor(firstFrame, cv2.COLOR_BGR2GRAY) # 灰度化 firstFrame = cv2.GaussianBlur(gray_firstFrame, (21, 21), 0) #高斯模糊,用于去噪 prveFrame = firstFrame.copy()#遍歷視頻的每一幀 while True:(ret, frame) = vc.read()# 如果沒有獲取到數據,則結束循環if not ret:break# 對獲取到的數據進行預處理frame = cv2.resize(frame, (640, 360), interpolation=cv2.INTER_CUBIC)gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)gray_frame = cv2.GaussianBlur(gray_frame, (3, 3), 0)cv2.imshow("current_frame", gray_frame)cv2.imshow("prveFrame", prveFrame)# 計算當前幀與上一幀的差別frameDiff = cv2.absdiff(prveFrame, gray_frame)cv2.imshow("frameDiff", frameDiff)prveFrame = gray_frame.copy()# 忽略較小的差別retVal, thresh = cv2.threshold(frameDiff, 25, 255, cv2.THRESH_BINARY)# 對閾值圖像進行填充補洞thresh = cv2.dilate(thresh, None, iterations=2)image, contours, hierarchy = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)text = "Unoccupied"# 遍歷輪廓for contour in contours:# if contour is too small, just ignore itif cv2.contourArea(contour) < 50: #面積閾值continue# 計算最小外接矩形(非旋轉)(x, y, w, h) = cv2.boundingRect(contour)cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)text = "Occupied!"# cv2.putText(frame, "Room Status: {}".format(text), (10, 20), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2)cv2.putText(frame, "F{}".format(frameCount), (20, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2)cv2.imshow('frame_with_result', frame)cv2.imshow('thresh', thresh)cv2.imshow('frameDiff', frameDiff)# 處理按鍵效果key = cv2.waitKey(60) & 0xffif key == 27: # 按下ESC時,退出breakelif key == ord(' '): # 按下空格鍵時,暫停cv2.waitKey(0)cv2.waitKey(0)vc.release()

?

3、效果展示

①、前后兩幀的灰度圖:

?

②、幀差法結果:

?

③、運動目標檢測結果:

?

參考資料:

http://python.jobbole.com/81593/?

https://www.cnblogs.com/gxcdream/p/7531744.html

總結

以上是生活随笔為你收集整理的【Python】监控视频中运动目标检测的代码实现及效果展示的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。