在計(jì)算機(jī)視覺領(lǐng)域,視頻目標(biāo)跟蹤是一個(gè)非常重要的任務(wù)。視頻目標(biāo)跟蹤廣泛應(yīng)用于監(jiān)控、自動(dòng)駕駛、人機(jī)交互等多個(gè)領(lǐng)域。OpenCV 提供了多種目標(biāo)跟蹤算法,其中 MeanShift 和 CamShift 是兩種經(jīng)典且常用的算法。本文將詳細(xì)講解這兩種算法的原理、實(shí)現(xiàn)步驟以及如何在 OpenCV 中使用它們。
https://bbs.elecfans.com/jishu_2497622_1_1.html
https://bbs.elecfans.com/jishu_2497621_1_1.html
一、開啟SSH遠(yuǎn)程訪問
網(wǎng)絡(luò)連接:使用網(wǎng)線或者wifi連接與PC電腦連接到一個(gè)網(wǎng)絡(luò)。
獲取板子IP地址:整成在板子終端使用命令行ifconfig查看網(wǎng)絡(luò)地址,但此板子默認(rèn)是debian系統(tǒng)需要使用ip a命令查看ip
通過SSH連接開發(fā)板:遠(yuǎn)程登錄賬號(hào)和密碼是linaro;
二、安裝Pip管理工具
安裝Pip管理工具
Sudo apt-getinstall python3-pip
三、安裝OpenCV 2環(huán)境
cv2支持圖像處理(如濾波、邊緣檢測、色彩轉(zhuǎn)換)、視頻分析(如運(yùn)動(dòng)檢測、目標(biāo)跟蹤)、特征提?。ㄈ?SIFT 、 ORB 算法)、機(jī)器學(xué)習(xí)(如 SVM 、 決策樹 )等。其跨平臺(tái)特性使其能在 Linux 、 Windows 、 Android 等系統(tǒng)上運(yùn)行,并通過Python接口簡化操作。
安裝OpenCV 2環(huán)境
sudoapt install libopencv-dev python3-opencv
2.OpenCV圖像識(shí)別測試
使用python3 count3.py,運(yùn)行事先準(zhǔn)備好的圖像識(shí)別程序,運(yùn)行結(jié)果如圖所示
四、運(yùn)行CamShift 算法
目標(biāo)跟蹤算法介紹:
在計(jì)算機(jī)視覺領(lǐng)域,視頻目標(biāo)跟蹤是一個(gè)非常重要的任務(wù)。視頻目標(biāo)跟蹤廣泛應(yīng)用于監(jiān)控、自動(dòng)駕駛、人機(jī)交互等多個(gè)領(lǐng)域。OpenCV 提供了多種目標(biāo)跟蹤算法,其中 MeanShift 和 CamShift 是兩種經(jīng)典且常用的算法。
CamShift 算法:
算法原理:
CamShift(Continuously Adaptive MeanShift)算法是 MeanShift 的改進(jìn)版本,它通過自適應(yīng)調(diào)整窗口大小來更好地跟蹤目標(biāo)。CamShift 算法在 MeanShift 的基礎(chǔ)上增加了窗口大小和方向的調(diào)整,使其能夠適應(yīng)目標(biāo)在視頻中的尺寸和旋轉(zhuǎn)變化。
CamShift 算法的基本步驟如下:
初始化窗口:與 MeanShift 相同,在視頻的第一幀中選擇初始窗口。
計(jì)算質(zhì)心:在當(dāng)前窗口中,計(jì)算目標(biāo)區(qū)域的質(zhì)心。
移動(dòng)窗口:將窗口中心移動(dòng)到質(zhì)心位置。
調(diào)整窗口大小和方向:根據(jù)目標(biāo)的尺寸和方向調(diào)整窗口。
迭代:重復(fù)步驟 2 到 4,直到窗口中心不再變化或達(dá)到最大迭代次數(shù)。
OpenCV 中的實(shí)現(xiàn):
在 OpenCV 中,CamShift 算法通過 cv2.CamShift() 函數(shù)實(shí)現(xiàn),Python程序?qū)儆谀_本語言不需要編譯即可使用,使用命令行python3 video.py 即可運(yùn)行。
# -*- coding: utf-8 -*-import cv2import numpy as np# 讀取視頻cap = cv2.VideoCapture('car1.mp4')# 讀取第一幀ret, frame = cap.read()# 設(shè)置初始窗口 (x, y, width, height)x, y, w, h = 350, 250, 300, 300track_window = (x, y, w, h)# 設(shè)置 ROI (Region of Interest)roi = frame[y:y+h, x:x+w]# 轉(zhuǎn)換為 HSV 顏色空間hsv_roi = cv2.cvtColor(roi, cv2.COLOR_BGR2HSV)# 創(chuàng)建掩膜并計(jì)算直方圖mask = cv2.inRange(hsv_roi, np.array((0., 60., 32.)), np.array((180., 255., 255.)))roi_hist = cv2.calcHist([hsv_roi], [0], mask, [180], [0, 180])cv2.normalize(roi_hist, roi_hist, 0, 255, cv2.NORM_MINMAX)# 設(shè)置終止條件term_crit = (cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_COUNT, 10, 1)while True:ret, frame = cap.read()if not ret:break# 轉(zhuǎn)換為 HSV 顏色空間hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)# 計(jì)算反向投影dst = cv2.calcBackProject([hsv], [0], roi_hist, [0, 180], 1)# 應(yīng)用 MeanShift 算法ret, track_window = cv2.meanShift(dst, track_window, term_crit)# 繪制跟蹤結(jié)果x, y, w, h = track_windowimg2 = cv2.rectangle(frame, (x, y), (x+w, y+h), 255, 2)cv2.imshow('MeanShift Tracking', img2)if cv2.waitKey(30) & 0xFF == 27:breakcap.release()cv2.destroyAllWindows()
-
目標(biāo)跟蹤
+關(guān)注
關(guān)注
2文章
89瀏覽量
15217 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
5990瀏覽量
109905 -
OpenCV
+關(guān)注
關(guān)注
33文章
650瀏覽量
43946
發(fā)布評論請先 登錄
如何用OpenCV進(jìn)行手勢識(shí)別--基于米爾全志T527開發(fā)板

【GM-3568JHF開發(fā)板免費(fèi)體驗(yàn)】視美泰GM-3568JHF開發(fā)板開箱測評報(bào)告
【GM-3568JHF開發(fā)板免費(fèi)體驗(yàn)】GM-3568JHF的coremark跑分5007分
【GM-3568JHF開發(fā)板免費(fèi)體驗(yàn)】OpenCV 視頻目標(biāo)跟蹤 ( CamShift)
【GM-3568JHF開發(fā)板免費(fèi)體驗(yàn)】OpenCV開發(fā)環(huán)境安裝和計(jì)數(shù)程序開發(fā)
【GM-3568JHF開發(fā)板免費(fèi)體驗(yàn)】開發(fā)環(huán)境安裝
【作品合集】視美泰M-K1HSE、3568開發(fā)板測評
基于OPENCV的運(yùn)動(dòng)目標(biāo)跟蹤實(shí)現(xiàn)
基于QT+OpenCv的目標(biāo)跟蹤算法實(shí)現(xiàn)
RK3568開發(fā)板NPU使用安裝步驟
基于OPENCV的運(yùn)動(dòng)目標(biāo)跟蹤實(shí)現(xiàn)

QT+Opencv粒子濾波算法實(shí)現(xiàn)視頻目標(biāo)跟蹤——(三)QT環(huán)境安裝及配置
迅為基于RK3568開發(fā)板的嵌入式學(xué)習(xí)之Linux驅(qū)動(dòng)視頻

評論