精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

目標跟蹤器 | Kalman + FAST 預測物體運動 | 附代碼

開發
在本文中,我將展示如何使用卡爾曼濾波器和FAST算法來跟蹤物體并預測物體的運動。

對于目標跟蹤,有諸如FAST、SURF、SIFT和ORB等特征提取算法。在從目標物體提取特征后,可以嘗試對每一幀的這些特征進行跟蹤,通過這種方式,可以創建一個簡單的目標跟蹤器。但是,如何預測物體的運動呢?可能想知道1秒后目標物體將位于何處。僅使用特征提取算法是無法做到的,但不用擔心,卡爾曼濾波器非常適合運動預測任務。在本文中,我將展示如何使用卡爾曼濾波器和FAST算法來跟蹤物體并預測物體的運動。

紅色圓圈 → 運動預測

卡爾曼濾波器和FAST算法

卡爾曼濾波器使用過去的數據來預測物體的運動。使用卡爾曼濾波器時,必須跟蹤一個物體,因為卡爾曼濾波器需要位置數據,基于這些位置數據,它預測物體的位置。

使用FAST算法,我將跟蹤物體,提取中心坐標,并使用這些數據與卡爾曼濾波器一起預測物體的位置。

NOTE: 關于FAST算法的文章,后續我們有機會將進行詳細解讀。

代碼/跟蹤和預測物體的運動 → FAST + 卡爾曼濾波器

主要有5個步驟,我將逐一解釋它們。

# Import Necessary Libraries

import cv2
import numpy as np 
import matplotlib.pyplot as plt
import time

1.使用FAST算法提取跟蹤特征:用鼠標左鍵在目標物體周圍畫一個矩形框,將從這個矩形框中提取特征。

# Path to video  
video_path = r"videos/helicopter3.mp4"
video = cv2.VideoCapture(video_path)

# read only the first frame for drawing a rectangle for the desired object
ret,frame = video.read()

# I am giving  big random numbers for x_min and y_min because if you initialize them as zeros whatever coordinate you go minimum will be zero 
x_min,y_min,x_max,y_max=36000,36000,0,0


def coordinat_chooser(event,x,y,flags,param):
    global go , x_min , y_min, x_max , y_max

    # when you click the right button, it will provide coordinates for variables
    if event==cv2.EVENT_LBUTTONDOWN:
        
        # if current coordinate of x lower than the x_min it will be new x_min , same rules apply for y_min 
        x_min=min(x,x_min) 
        y_min=min(y,y_min)

         # if current coordinate of x higher than the x_max it will be new x_max , same rules apply for y_max
        x_max=max(x,x_max)
        y_max=max(y,y_max)

        # draw rectangle
        cv2.rectangle(frame,(x_min,y_min),(x_max,y_max),(0,255,0),1)


    """
        if you didn't like your rectangle (maybe if you made some misscliks),  reset the coordinates with the middle button of your mouse
        if you press the middle button of your mouse coordinates will reset and you can give a new 2-point pair for your rectangle
    """
    if event==cv2.EVENT_MBUTTONDOWN:
        print("reset coordinate  data")
        x_min,y_min,x_max,y_max=36000,36000,0,0

cv2.namedWindow('coordinate_screen')
# Set mouse handler for the specified window, in this case, "coordinate_screen" window
cv2.setMouseCallback('coordinate_screen',coordinat_chooser)


while True:
    cv2.imshow("coordinate_screen",frame) # show only first frame 
    
    k = cv2.waitKey(5) & 0xFF # after drawing rectangle press ESC   
    if k == 27:
        cv2.destroyAllWindows()
        break

繪制矩形框以定位目標

2. 顯示提取的特征:使用FAST算法從矩形框中提取特征。

# take region of interest ( take inside of rectangle )
roi_image=frame[y_min+2:y_max-2,x_min+2:x_max-2]
roi_rgb=cv2.cvtColor(roi_image,cv2.COLOR_BGR2RGB)

# convert roi to grayscale, SIFT Algorithm works with grayscale images
roi_gray=cv2.cvtColor(roi_image,cv2.COLOR_BGR2GRAY) 

# Initialize the FAST detector and BRIEF descriptor extractor
fast = cv2.FastFeatureDetector_create(threshold=1)
brief = cv2.xfeatures2d.BriefDescriptorExtractor_create()


# detect keypoints
keypoints_1 = fast.detect(roi_gray, None)
# descriptors
keypoints_1, descriptors_1 = brief.compute(roi_gray, keypoints_1)

# draw keypoints for visualizing
keypoints_image = cv2.drawKeypoints(roi_rgb, keypoints_1, outImage=None, color=(23, 255, 10))
# display keypoints
plt.imshow(keypoints_image,cmap="gray")

提取的特征

3.創建一個提取目標物體中心位置的函數

# matcher object
bf = cv2.BFMatcher()

def detect_target_fast(frame):
    # convert frame to gray scale 
    frame_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    # Detect keypoints using FAST
    keypoints_2 = fast.detect(frame_gray, None)

    # Compute descriptors using BRIEF
    keypoints_2, descriptors_2 = brief.compute(frame_gray, keypoints_2)

    """
    Compare the keypoints/descriptors extracted from the 
    first frame (from target object) with those extracted from the current frame.
    """
    if descriptors_2 is not None:
        matches = bf.match(descriptors_1, descriptors_2)
        
        if matches:
            # Initialize sums for x and y coordinates
            sum_x = 0
            sum_y = 0
            match_count = 0
            
            for match in matches:
                # .trainIdx gives keypoint index from current frame 
                train_idx = match.trainIdx
                
                # current frame keypoints coordinates
                pt2 = keypoints_2[train_idx].pt
                
                # Sum the x and y coordinates
                sum_x += pt2[0]
                sum_y += pt2[1]
                match_count += 1
            
            # Calculate average of the x and y coordinates
            avg_x = sum_x / match_count
            avg_y = sum_y / match_count
            
    return int(avg_x),int(avg_y)

4.初始化卡爾曼濾波器

# Initialize Kalman filter parameters
kalman = cv2.KalmanFilter(4, 2)   
 
kalman.measurementMatrix = np.array([[1, 0, 0, 0], [0, 1, 0, 0]], np.float32)
kalman.transitionMatrix = np.array([[1, 0, 1, 0], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]], np.float32)
kalman.processNoiseCov = np.eye(4, dtype=np.float32) * 0.03  # Process noise
kalman.measurementNoiseCov = np.eye(2, dtype=np.float32) * 0.5  # Measurement noise

5.讀取視頻并使用卡爾曼濾波器和FAST算法

# Startcapturing the video from file
cap = cv2.VideoCapture(video_path)

while True:
    ret, frame = cap.read()
    if not ret:
        break
    
    # Predict the new position of the ball
    predicted = kalman.predict()
    predicted_x, predicted_y = int(predicted[0]), int(predicted[1])
    predicted_dx, predicted_dy = predicted[2], predicted[3]  # Predicted velocity

    print(predicted_x, predicted_y )
    print(f"Predicted velocity: (dx: {predicted_dx}, dy: {predicted_dy})")

    
    # Detect the ball in the current frame
    ball_position = detect_target_fast(frame)
    
    if ball_position:
        measured_x, measured_y = ball_position
        # Correct the Kalman Filter with the actual measurement
        kalman.correct(np.array([[np.float32(measured_x)], [np.float32(measured_y)]]))
        # Draw the detected ball
        cv2.circle(frame, (measured_x, measured_y), 6, (0, 255, 0), 2) # green --> correct position
    
    # Draw the predicted position (Kalman Filter result)
    cv2.circle(frame, (predicted_x, predicted_y), 8, (0, 0, 255), 2) # red --> predicted position

    # Show the frame
    cv2.imshow("Kalman Ball Tracking", frame)
    
    # Break on 'q' key press
    if cv2.waitKey(30) & 0xFF == ord('q'):  # 30 ms delay for smooth playback
        break

cap.release()
cv2.destroyAllWindows()

終端輸出

跟蹤和預測飛機

責任編輯:趙寧寧 來源: 小白玩轉Python
相關推薦

2024-12-19 08:00:00

FAST算法OpenCV目標跟蹤

2024-11-20 16:51:00

目標檢測模型

2019-06-06 15:00:10

2022-06-10 10:24:02

JavaScriptCOVID-19前端

2011-01-18 13:50:20

路由跟蹤tcptracerou

2020-08-29 18:38:11

物聯網 LPWAN資產跟蹤器

2022-05-27 10:06:17

DuckDuckGo用戶隱私微軟

2015-01-09 09:41:16

HTTPSHTTPS安全COOKIE

2021-03-02 09:42:25

跟蹤器密碼管理器密碼

2018-03-13 11:38:14

2023-03-02 08:32:27

2022-01-05 09:00:00

加密貨幣數據技術

2011-09-15 15:38:48

Android應用Endomondo運動

2019-05-14 09:53:31

代碼開發工具

2025-02-17 07:00:00

ORB對象跟蹤器計算機視覺

2025-01-23 08:47:50

2023-06-06 06:26:26

2010-03-18 11:26:46

無線傳感器網絡多目標跟

2024-10-31 11:03:06

C#橢圓運動緩沖

2024-09-24 17:12:47

點贊
收藏

51CTO技術棧公眾號

中文字幕自拍vr一区二区三区| 岛国精品视频在线播放| 国产专区精品视频| 深夜福利影院在线观看| 久本草在线中文字幕亚洲| 精品magnet| 亚洲精美视频| www.成人精品| 亚洲综合好骚| 日韩在线视频国产| 日本少妇一区二区三区| 人狥杂交一区欧美二区| 日本一区二区三区在线观看| 91老司机在线| 欧美三级午夜理伦| 国产精品毛片一区二区在线看| 精品国产一二三| 男人插女人下面免费视频| 羞羞污视频在线观看| 久久一二三国产| 91免费视频国产| 久久久午夜影院| 久久裸体网站| 亚洲国产精品电影| 九九热免费在线观看| 日本在线影院| 亚洲欧洲日韩女同| 欧美不卡在线一区二区三区| 国产99对白在线播放| 久久亚洲精品伦理| 国内精品小视频| av片在线免费看| 天海翼精品一区二区三区| 91精品国产综合久久久久久久| 九色在线视频观看| 日本精品600av| 中文字幕亚洲视频| 欧美国产一区二区在线| 国精产品一品二品国精品69xx| 久久福利资源站| 奇米成人av国产一区二区三区| 青草草在线视频| 日本不卡电影| 亚洲欧美日韩精品久久奇米色影视| 中文字幕第66页| 国产精品高清乱码在线观看| 午夜伦理一区二区| 欧美图片激情小说| av香蕉成人| 最新热久久免费视频| 四虎永久在线精品免费一区二区| 香蕉视频黄色片| 岛国精品在线播放| 91久色国产| 国产乱码精品一区二三区蜜臂 | 欧美成人免费观看视频| 久久影院一区| 这里只有精品在线观看| www.av天天| 国产不卡一区| 国产一区二区三区日韩欧美| 巨胸大乳www视频免费观看| 久久这里只有精品一区二区| 欧美精品偷拍| 精品剧情在线观看| 精品国产免费久久久久久婷婷| www一区二区三区| 91麻豆精品国产91久久久使用方法| 黄色永久免费网站| 激情中国色综合| 欧美精品亚洲二区| 国产5g成人5g天天爽| 国产aa精品| 日韩欧美第一区| www.美色吧.com| 99久久免费精品国产72精品九九| 精品福利二区三区| 三叶草欧洲码在线| 精品一区不卡| 日韩视频永久免费观看| 日韩女优一区二区| 91久久综合| 国产不卡视频在线| 亚洲天堂网在线视频| 国模娜娜一区二区三区| 不卡日韩av| 外国精品视频在线观看 | 手机在线理论片| 精品国产31久久久久久| 能在线观看的av网站| 久久天天久久| 亚洲精品在线观看视频| 搡老熟女老女人一区二区| 欧美美乳视频| www.亚洲一区| 国产一级免费av| 性色一区二区三区| 成人免费在线网址| 天堂网在线中文| 国产精品丝袜在线| 毛片av在线播放| 日本免费一区二区三区四区| 777欧美精品| 丰满岳乱妇一区二区| 欧美一区二区性| 欧美丰满少妇xxxxx做受| www.国产高清| 国产一区二区三区免费| 精品一卡二卡三卡四卡日本乱码| aaa在线免费观看| 洋洋成人永久网站入口| 午夜视频在线瓜伦| 在线精品自拍| 伊人久久久久久久久久久| 欧美成人一二三区| 日本不卡视频在线| 国产在线精品一区二区中文| 18视频免费网址在线观看| 亚洲妇熟xx妇色黄| www.久久av.com| 牛牛影视久久网| 久久影视电视剧免费网站| 人人爽人人爽人人片av| 国产精品1区二区.| 午夜老司机精品| 精品无人区无码乱码毛片国产| 久久动漫网址| 久久综合电影一区| 波多野结衣电车| 不卡的av网站| 成人在线免费观看视频网站| 国产亚洲精彩久久| 日韩高清av一区二区三区| 国内偷拍精品视频| 国产在线一区二区综合免费视频| 欧美一区二区三区精美影视| 国产精选在线| 精品少妇一区二区三区视频免付费| 四虎国产成人精品免费一女五男| 亚洲欧美视频一区二区三区| 国产精品三区在线| 亚洲区欧洲区| 欧美一区二区三区在线观看| 日本美女xxx| 丝瓜av网站精品一区二区| 精品国产福利| 9999在线视频| 亚洲精品一区二区精华| 精品人妻在线播放| 成人免费视频app| 日本精品福利视频| 精品一区91| 久久艳片www.17c.com| 国产免费无遮挡| 一区在线观看免费| 中文字幕在线观看日| 日韩精品水蜜桃| 国产精品福利在线观看网址| 激情在线视频| 欧美中文字幕一区| 久久精品三级视频| 蜜桃av一区二区在线观看| 亚洲成人自拍| 四虎成人精品一区二区免费网站| 中文在线不卡视频| 一道本在线视频| 最近日韩中文字幕| av电影中文字幕| 1024日韩| 免费国产一区| 在线日本欧美| 中文字幕在线日韩| jizz中国少妇| 亚洲成人动漫在线观看| 欧美 变态 另类 人妖| 美女网站久久| 亚洲7777| 久久丁香四色| 97超级碰在线看视频免费在线看 | 精品欧美黑人一区二区三区| 国产 日韩 欧美 成人| 99久久99久久免费精品蜜臀| 免费在线观看毛片网站| 日韩欧美视频专区| 999精品视频一区二区三区| sm性调教片在线观看| 亚洲男女性事视频| 一本色道久久综合无码人妻| 亚洲欧美一区二区三区久本道91| 亚洲美女精品视频| 日韩精品午夜视频| 久久久久久久久影视| 美女扒开腿让男人桶爽久久动漫| 国产91在线播放| 国产原厂视频在线观看| 亚洲福利小视频| 中国一级特黄视频| 亚洲一区二区三区免费视频| 西西444www无码大胆| 国产资源在线一区| 欧美二区在线视频| 天堂网在线观看国产精品| 国偷自产av一区二区三区小尤奈| 成人免费视频观看| 久久欧美在线电影| 午夜免费福利在线观看| 日韩成人中文电影| 国产精品视频一二区| 精品国产成人av| 久久高清内射无套| 国产亚洲精品7777| 91传媒理伦片在线观看| 美女一区二区视频| 无码aⅴ精品一区二区三区浪潮| 外国成人免费视频| 人禽交欧美网站免费| youjizz亚洲| 成人av电影天堂| 深夜成人影院| 97在线精品国自产拍中文| 麻豆免费在线观看| 国产一区二区三区视频在线观看| 亚洲精品免费在线观看视频| 欧美日韩免费不卡视频一区二区三区| 超碰中文字幕在线| 亚洲综合一区二区| 色婷婷在线视频观看| 国产亚洲精品中文字幕| 欧美一区二区免费在线观看| 激情综合五月婷婷| jizz大全欧美jizzcom| 免费在线观看成人av| 亚洲国产成人精品无码区99| 综合激情婷婷| 亚洲欧美综合一区| 美女毛片一区二区三区四区| 国产欧美一区二区三区另类精品| 国产午夜久久av| 国产精品色婷婷视频| 亚洲校园激情春色| 91精品国产高清| 人妖欧美1区| 久久91亚洲精品中文字幕奶水| 91啦中文在线| 国产一区二区三区丝袜| 国模精品一区二区| 亚洲欧美在线一区二区| 天堂在线视频免费观看| 亚洲国产三级网| 色综合久久久久久| 日韩精品在线视频美女| 性插视频在线观看| 日韩成人av网| 日韩三级电影网| 国产视频综合在线| 日本高清中文字幕二区在线| 亚洲黄色片网站| 婷婷国产在线| 亚洲毛片在线看| 黄色片视频在线观看| 亚洲美女久久久| 人妻少妇精品无码专区| 亚洲丁香久久久| 欧美中文在线| 亚洲最新在线视频| 四虎久久免费| 欧美国产日韩免费| 啊啊啊久久久| 日本高清不卡在线| 国产精品4hu.www| 91久久久精品| 九九热hot精品视频在线播放| 九九热久久66| 欧美裸体在线版观看完整版| 视频一区免费观看| 88国产精品视频一区二区三区| 最近看过的日韩成人| 欧美激情综合色综合啪啪| 可以看毛片的网址| 亚洲综合精品四区| 波多野结衣xxxx| 国产成人亚洲综合色影视| 亚洲午夜久久久久久久久| 91丝袜高跟美女视频| 一级片视频免费看| 亚洲天堂成人网| 久草免费在线观看视频| 第一福利永久视频精品| 中文字幕精品一区二| 日韩一区二区麻豆国产| 性xxxx视频| 久久精品国产96久久久香蕉| 色呦呦在线看| 日本欧美一二三区| 国产在线视频欧美一区| 久久久久久久久四区三区| 精品国产91乱码一区二区三区四区 | 盗摄精品av一区二区三区| 一区二区三区伦理片| 亚洲人成精品久久久久久| 91视频免费网址| 欧美精品日韩精品| 亚洲色图欧美视频| 久久在线精品视频| 日本不卡一二三| 国产精品手机视频| 爽成人777777婷婷| 欧美二区在线视频| 国产一区久久久| 中文字幕第4页| 亚洲午夜视频在线| 自拍偷拍精品视频| 亚洲第一精品福利| 麻豆传媒在线完整视频| 全亚洲最色的网站在线观看| 欧美高清hd| 日韩福利二区| 伊人成年综合电影网| 日本不卡一区二区在线观看| www.欧美色图| 久久久精品视频免费观看| 欧洲av在线精品| 四虎免费在线观看| 色综合视频网站| 欧美性www| 婷婷四房综合激情五月| 一本色道久久综合| 欧美人与性动交α欧美精品| 国产精品美女一区二区三区| 天堂在线免费观看视频| 亚洲成人精品久久久| 日本韩国在线视频爽| 国产精品成人v| 在线亚洲a色| 日韩精品视频一区二区在线观看| 成人v精品蜜桃久久一区| 欧美三级在线免费观看| 91精品在线观看入口| 亚洲搞黄视频| 国产精品男人爽免费视频1| 国产探花在线精品一区二区| 国产三区在线视频| 99re这里只有精品首页| 成人午夜视频精品一区| 亚洲激情中文字幕| yellow在线观看网址| 国产日本一区二区三区| 亚洲看片免费| 给我看免费高清在线观看| 午夜精品久久久久| 天天色棕合合合合合合合| 亚州av一区二区| 日韩理论电影中文字幕| 狠狠爱免费视频| 久久综合给合久久狠狠狠97色69| 在线观看免费av片| 亚洲欧洲国产一区| 欧美与亚洲与日本直播| 亚洲精品中字| 国产一区二区成人久久免费影院| caoporn91| 精品成人佐山爱一区二区| www.51av欧美视频| 欧美一区二区综合| 奇米在线7777在线精品| 人人澡人人澡人人看| 欧美成人三级电影在线| av影片在线| 欧美一区二区福利| 美女国产一区二区三区| 私库av在线播放| 亚洲国产91色在线| 欧美大片免费高清观看| 色综合久久av| 国产在线视频一区二区三区| 免费毛片在线播放免费| 亚洲成年人影院在线| 成人免费短视频| 亚洲午夜精品一区二区| 极品少妇xxxx偷拍精品少妇| 久久网中文字幕| 亚洲欧美福利视频| 欧美亚洲二区| 免费看欧美黑人毛片| 国产日韩视频一区二区三区| 国产又黄又粗又硬| 久久久久久久久久久人体| 伊人久久综合影院| 91大神免费观看| 欧美日韩午夜激情| 亚洲麻豆精品| 国产偷国产偷亚洲高清97cao| 视频一区二区三区入口| 性欧美videos| 亚洲欧美日韩一区二区三区在线| 成人黄色免费网站| 成人一区二区免费视频| 国产精品乱人伦| 人人妻人人澡人人爽久久av| 国产精品伦子伦免费视频|