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

基于 OpenCV 和 Matplotlib 的物體移動可視化

開發 機器視覺
在本文中,我將向你展示如何結合OpenCV和Matplotlib的強大功能,創建此類信號的實時動畫可視化。

在計算機視覺中,一個基本目標是從靜態圖像或視頻序列中提取有意義的信息。為了理解這些信號,通常有助于對其進行可視化。例如,在跟蹤高速公路上行駛的單個汽車時,我們可以圍繞它們繪制邊界框,或者在檢測傳送帶上產品線中的問題時,我們可以使用不同的顏色來標記異常。但是,如果提取的信息是更具數值性質的,并且你希望可視化該信號的時間動態呢?

僅僅在屏幕上顯示數值可能無法提供足夠的洞察力,尤其是當信號變化迅速時。在這種情況下,可視化信號的一個好方法是帶有時間軸的圖表。在本文中,我將向你展示如何結合OpenCV和Matplotlib的強大功能,創建此類信號的實時動畫可視化。

繪制球的運動軌跡

讓我們從一個簡單的示例問題開始,我錄制了一個球垂直向上拋出的視頻。目標是跟蹤視頻中的球,并繪制其位置p(t)、速度v(t)和加速度a(t)隨時間的變化。

輸入視頻截圖

讓我們將參考坐標系定義為攝像機,為了簡單起見,我們只跟蹤圖像中球的垂直位置。我們期望位置呈拋物線形狀,速度線性減小,加速度保持恒定。

預期圖表的草圖

球體分割

首先,我們需要在視頻序列的每一幀中識別球體。由于攝像機保持靜止,檢測球的一個簡單方法是使用背景減除模型,并結合顏色模型來去除畫面中的手。

首先,讓我們使用OpenCV的VideoCapture簡單循環顯示視頻片段。我們只需在視頻片段結束時重新開始播放。我們還通過根據視頻的FPS計算sleep_time(以毫秒為單位)來確保以原始幀速率播放視頻。最后,確保釋放資源并關閉窗口。

輸入視頻的可視化代碼:

import cv2

cap = cv2.VideoCapture("ball.mp4")
fps = int(cap.get(cv2.CAP_PROP_FPS))

while True:
    ret, frame = cap.read()
    if not ret:
        cap.set(cv2.CAP_PROP_POS_FRAMES, 0)
        continue

    cv2.imshow("Frame", frame)

    sleep_time = 1000 // fps
    key = cv2.waitKey(sleep_time) & 0xFF
    if key & 0xFF == ord("q"):
        break

cap.release()
cv2.destroyAllWindows()

讓我們先提取球的二值分割掩碼。這基本上意味著我們希望創建一個掩碼,該掩碼對球的像素激活,對所有其他像素不激活。為此,我將結合兩個掩碼:運動掩碼和顏色掩碼。運動掩碼提取移動的部分,而顏色掩碼主要去除畫面中的手。對于顏色過濾器,我們可以將圖像轉換為HSV顏色空間,并選擇包含球體綠色但不含膚色色調的特定色調范圍(20–100)。我不對飽和度或亮度值進行過濾,因此我們可以使用全范圍(0–255)。

hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
mask_color = cv2.inRange(hsv, (20, 0, 0), (100, 255, 255))

要創建運動掩碼,我們可以使用簡單的背景減除模型。我們使用視頻的第一幀作為背景,將學習率設置為1。在循環中,我們應用背景模型以獲取前景掩碼,但通過將學習率設置為0,不將新幀集成到其中。

bg_sub = cv2.createBackgroundSubtractorMOG2(varThreshold=50, detectShadows=False)
ret, frame0 = cap.read()
if not ret:
    print("Error: cannot read video file")
    exit(1)
bg_sub.apply(frame0, learningRate=1.0)

while True:
  ...
  mask_fg = bg_sub.apply(frame, learningRate=0)

接下來,我們可以結合這兩個掩碼,并應用開運算形態學操作以去除小噪聲,最終得到球的完美分割。

mask = cv2.bitwise_and(mask_color, mask_fg)
mask = cv2.morphologyEx(
    mask, cv2.MORPH_OPEN, cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (13, 13))
)

跟蹤球體

現在我們只剩下掩碼中的球體。為了跟蹤球的中心,我首先提取球的輪廓,然后將其邊界框的中心作為參考點。如果某些噪聲通過了我們的掩碼,我通過大小過濾檢測到的輪廓,只關注最大的一個。

contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
if len(contours) > 0:
    largest_contour = max(contours, key=cv2.contourArea)
    x, y, w, h = cv2.boundingRect(largest_contour)
    center = (x + w // 2, y + h // 2)

我們還可以在幀中添加一些注釋以可視化檢測結果。我打算繪制兩個圓圈,一個用于中心,一個用于球的周長。

cv2.circle(frame, center, 30, (255, 0, 0), 2)
cv2.circle(frame, center, 2, (255, 0, 0), 2)

為了跟蹤球的位置,我們可以使用一個列表。每當檢測到球時,我們只需將中心位置添加到列表中。我們還可以通過在跟蹤位置列表的每個段之間繪制線條來可視化軌跡。

tracked_pos = []


while True:
  ...

  if len(contours) > 0:
    ... 
    tracked_pos.append(center)


  # draw trajectory
  for i in range(1, len(tracked_pos)):
      cv2.line(frame, tracked_pos[i - 1], tracked_pos[i], (255, 0, 0), 1)

球體軌跡的可視化

創建圖表

現在我們可以跟蹤球了,讓我們開始探索如何使用matplotlib繪制信號。首先,我們可以在視頻結束時創建最終圖表,然后在第二步中考慮如何實時動畫化它。為了顯示位置、速度和加速度,我們可以使用三個水平對齊的子圖:

fig, axs = plt.subplots(nrows=1, ncols=3, figsize=(10, 2), dpi=100)

axs[0].set_title("Position")
axs[0].set_ylim(0, 700)
axs[1].set_title("Velocity")
axs[1].set_ylim(-200, 200)
axs[2].set_title("Acceleration")
axs[2].set_ylim(-30, 10)

for ax in axs:
    ax.set_xlim(0, 20)
    ax.grid(True)

我們只對圖像中的y位置(數組索引1)感興趣,為了獲得零偏移的位置圖,我們可以減去第一個位置。

pos0 = tracked_pos[0][1]
pos = np.array([pos0 - pos[1] for pos in tracked_pos])

對于速度,我們可以使用位置的差值作為近似值,對于加速度,我們可以使用速度的差值。

vel = np.diff(pos)
acc = np.diff(vel)

現在我們可以繪制這三個值:

位置、速度和加速度的靜態圖表

動畫化圖表

現在進入有趣的部分,我們希望使這個圖表動態化!由于我們正在OpenCV的GUI循環中工作,我們不能直接使用matplotlib的show函數,因為這會阻塞循環并且不會運行我們的程序。相反,我們需要使用一些技巧。主要思想是將圖表繪制到內存中的緩沖區,然后在OpenCV窗口中顯示該緩沖區。通過手動調用畫布的draw函數,我們可以強制將圖形渲染到緩沖區。然后我們可以獲取該緩沖區并將其轉換為數組。由于緩沖區是RGB格式,而OpenCV使用BGR,我們需要轉換顏色順序。

fig.canvas.draw()

buf = fig.canvas.buffer_rgba()
plot = np.asarray(buf)
plot = cv2.cvtColor(plot, cv2.COLOR_RGB2BGR)

確保axs.plot調用現在位于幀循環內:

while True:
  ...

  axs[0].plot(range(len(pos)), pos, c="b")
  axs[1].plot(range(len(vel)), vel, c="b")
  axs[2].plot(range(len(acc)), acc, c="b")

  ...

現在我們可以使用OpenCV的imshow函數簡單地顯示圖表。

cv2.imshow("Plot", plot)

為了提高性能,我們需要使用blitting技術。這是一種高級渲染技術,將圖表的靜態部分繪制到背景圖像中,只重新繪制變化的動態元素。要設置此功能,我們首先需要在幀循環之前為每個圖表定義一個引用。

pl_pos = axs[0].plot([], [], c="b")[0]
pl_vel = axs[1].plot([], [], c="b")[0]
pl_acc = axs[2].plot([], [], c="b")[0]

然后,我們需要在循環之前繪制一次圖形的背景,并獲取每個軸的背景。

fig.canvas.draw()
bg_axs = [fig.canvas.copy_from_bbox(ax.bbox) for ax in axs]

在循環中,我們現在可以更改每個圖表的數據,然后對于每個子圖,我們需要恢復區域的背景,繪制新圖表,然后調用blit函數以應用更改。

# Update plot data
pl_pos.set_data(range(len(pos)), pos)
pl_vel.set_data(range(len(vel)), vel)
pl_acc.set_data(range(len(acc)), acc)

# Blit Pos
fig.canvas.restore_region(bg_axs[0])
axs[0].draw_artist(pl_pos)
fig.canvas.blit(axs[0].bbox)

# Blit Vel
fig.canvas.restore_region(bg_axs[1])
axs[1].draw_artist(pl_vel)
fig.canvas.blit(axs[1].bbox)

# Blit Acc
fig.canvas.restore_region(bg_axs[2])
axs[2].draw_artist(pl_acc)
fig.canvas.blit(axs[2].bbox)

完整代碼:https://github.com/trflorian/ball-tracking-live-plot/blob/main/src/tracker.py

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

2024-12-24 12:00:00

Matplotlib可視化分析Python

2022-07-13 15:54:14

Matplotlib圖表

2017-10-31 09:38:53

大數據數據可視化Python

2020-03-11 14:39:26

數據可視化地圖可視化地理信息

2024-10-24 16:43:15

2018-03-15 09:57:00

PythonMatplotlib數據可視化

2015-10-29 09:36:48

2023-04-04 08:10:45

SQL數據可視化

2017-10-14 13:54:26

數據可視化數據信息可視化

2009-04-21 14:26:41

可視化監控IT管理摩卡

2022-08-26 09:15:58

Python可視化plotly

2017-07-27 09:49:37

Python工具Matplotlib

2017-07-04 16:00:16

PythonMatplotlib可視化工具

2017-07-25 14:50:50

Rshinydashbo可視化

2013-07-31 10:14:15

炎黃盈動BPM

2025-06-17 08:05:00

2020-12-17 09:40:01

Matplotlib數據可視化命令

2020-07-16 15:20:37

MatplotlibPython可視化

2015-11-06 14:04:54

數據可視化信息圖

2019-06-23 15:44:24

Matplotlib可視化圖表
點贊
收藏

51CTO技術棧公眾號

精品丰满少妇一区二区三区| 亚洲国产一二三精品无码| www.欧美色| 欧美午夜精品一区二区三区电影| 在线观看日韩毛片| 一级全黄肉体裸体全过程| www久久久com| 久久国产精品久久w女人spa| 一区二区三区视频观看| 中文字幕亚洲影院| 51精品在线| 国产日韩欧美精品综合| 亚洲一区二区三区成人在线视频精品| 在线看成人av| 久久精品国产www456c0m| 日韩欧美在线综合网| 欧美日韩亚洲一| 久久久久久久久免费视频| 波多野结衣在线aⅴ中文字幕不卡| 国产suv精品一区二区三区88区| 国产探花在线视频| 三级精品视频| 日韩欧美成人一区二区| 午夜dv内射一区二区| 日本一级理论片在线大全| 国产亚洲欧美日韩在线一区| 91观看网站| 亚洲精品一区二三区| 精品动漫一区| 精品国模在线视频| 免费在线观看你懂的| 欧美久久一区二区三区| 欧美午夜在线观看| 精品国产亚洲一区二区三区在线观看| 欧美成人亚洲成人| 亚洲永久精品ww.7491进入| 国产精品一区二区精品视频观看| 日韩欧美一区二区在线| 激情视频小说图片| 天天影视久久综合| 久久久久久久久久久久久夜| 国产精品中出一区二区三区| 国产毛片久久久久| 蜜臀国产一区二区三区在线播放 | 99re在线视频| 91免费视频观看| 国产精华一区| 亚洲国产成人精品一区二区三区| 韩国v欧美v日本v亚洲v| 国产精品视频播放| 在线视频精品免费| 久久久国产亚洲精品| 97婷婷大伊香蕉精品视频| 免费视频一二三区| 欧美日韩1区| 久久婷婷国产麻豆91天堂| 美国精品一区二区| 日韩在线观看| 日韩网站免费观看| 免费中文字幕日韩| 亚洲天天综合| 欧美成人性生活| 免费人成视频在线| 黄色亚洲精品| 久久久人成影片一区二区三区观看| 欧美黄色aaa| 欧美在线精品一区| 欧美高清视频在线| 日韩精品一区三区| 久久看片网站| 国产精品av免费在线观看| 91丨九色丨海角社区| 日本亚洲视频在线| 91精品久久久久久久久中文字幕| 亚洲一区在线观| 久久99久久99精品免视看婷婷 | 激情六月天婷婷| 色呦呦视频在线观看| 亚洲午夜视频在线| www黄色日本| 成人开心激情| 欧美日韩亚州综合| 性生活在线视频| 亚洲欧美自偷自拍另类| 超碰在线影院| 中文字幕一区二区三区蜜月| 亚洲国产精品女人| 97人人在线视频| 在线一区二区三区四区五区| 日本特黄a级片| 亚洲经典视频| 亚洲精品网址在线观看| 国产三级短视频| 欧美99久久| 欧美亚洲视频在线看网址| 波多野结衣mp4| 国产精品18久久久久久vr| 精品在线观看一区二区| 91女主播在线观看| 亚洲成av人片在线| www.亚洲高清| 一区二区三区欧洲区| 亚洲女人天堂成人av在线| 色www亚洲国产阿娇yao| 国产精品jizz在线观看美国| 欧洲一区二区视频| 国产日韩欧美一区二区东京热| 丁香五精品蜜臀久久久久99网站| 欧美一区激情视频在线观看| 91三级在线| 色爱区综合激月婷婷| 亚洲国产欧美日韩在线| 一区二区三区日本久久久| 免费成人高清视频| 亚洲av中文无码乱人伦在线视色| 韩国av一区二区三区| 欧美成人综合一区| 午夜影院免费在线| 欧美午夜宅男影院| av无码av天天av天天爽| 欧美fxxxxxx另类| 国产精品成久久久久三级| 成人久久久精品国产乱码一区二区 | 久久久免费av| 国产精品熟女久久久久久| 91首页免费视频| 免费的av在线| 欧美高清你懂的| 亚洲欧美国产另类| 日本一本高清视频| 国产福利精品导航| 亚洲欧洲精品一区二区三区波多野1战4 | 91免费看片在线观看| 欧美这里只有精品| 中文字幕成人| 中文字幕日韩精品在线观看| 午夜婷婷在线观看| 99久久综合色| 国产美女作爱全过程免费视频| 日韩欧美激情| 亚洲欧美日韩国产成人| 日韩在线视频免费播放| 亚洲精品久久久久久久久久久久久久| 奇米影视一区二区三区| 久久超碰亚洲| 国产美女精品写真福利视频| 精品久久久久久久久久久久包黑料| 欧美风情第一页| 久久91精品国产91久久小草| 偷拍视频一区二区| 成人福利片在线| 色悠悠久久88| 久久久久久av无码免费看大片| 久久亚洲综合色| 国产91美女视频| 影视先锋久久| 青青草99啪国产免费| 欧美日韩伦理片| 一本大道久久a久久精品综合| 亚洲欧美色图视频| 国产日韩欧美一区| 欧美日韩亚洲综合一区二区三区激情在线 | 在线观看精品国产| 99re视频这里只有精品| 2022亚洲天堂| 欧美一区二区三区高清视频| 国产精品久久久久77777| aaa在线免费观看| 欧美日韩大陆一区二区| www日韩在线| 国产成人精品午夜视频免费| 久久男人资源站| 欧洲亚洲一区二区三区| 国产成人免费av电影| 97视频在线观看网站| 欧美精品777| 成人在线激情视频| 综合五月激情网| 国产一区啦啦啦在线观看| 九一免费在线观看| 精品国产一区二区三区不卡蜜臂| 555www成人网| 最新国产在线观看| 91精品一区二区三区在线观看| 免费在线观看av网址| 99国产精品久| 日本超碰在线观看| 国内揄拍国内精品久久| 欧美成人第一区| 欧美日韩va| 国内精品400部情侣激情| 欧美日韩在线精品一区二区三区激情综| 欧美性xxxxx极品少妇| 99视频只有精品| xnxx国产精品| 91插插插影院| 免播放器亚洲| 成人国产在线看| 国内精品久久久久久99蜜桃| 5566av亚洲| 国产日韩另类视频一区| 欧美成人午夜激情视频| 欧美日韩激情视频一区二区三区| 欧美丰满嫩嫩电影| 久久不卡免费视频| 亚洲精品中文字幕乱码三区| 国产ts丝袜人妖系列视频 | 国产日韩精品suv| 日韩欧美中文字幕在线播放| 一区视频免费观看| 中文字幕免费一区| 国模无码视频一区| 久久99日本精品| 欧美日韩高清区| 国产又粗又硬又长又爽| 久久先锋影音av鲁色资源| 肉色超薄丝袜脚交| 天堂一区二区在线| av日韩在线看| 国产精品毛片一区二区在线看| 激情伦成人综合小说| 欧美电影院免费观看| 国产精自产拍久久久久久| 亚洲精品一区| 欧美激情国产高清| 黄色免费网站在线观看| 亚洲人成伊人成综合网久久久| 黄色成人一级片| 日韩欧美一区二区久久婷婷| 一级片免费观看视频| 色综合咪咪久久| 日韩精品久久久久久久酒店| 亚洲免费伊人电影| 亚洲女人毛茸茸高潮| 国产亚洲精品免费| 精品国产人妻一区二区三区| 高清在线不卡av| 91人妻一区二区三区| 久久99精品久久久久久久久久久久 | 欧美婷婷久久五月精品三区| 欧美精品一区二区久久久| 国产熟女一区二区三区五月婷| 欧美午夜电影一区| 婷婷激情五月综合| 日本黄色一区二区| 欧美国产成人精品一区二区三区| 五月婷婷欧美视频| 久草手机在线观看| 黑人巨大精品欧美一区二区一视频| 久久久久成人精品无码| 亚洲一级二级在线| 九九热只有精品| 一区二区三区在线观看国产| 少妇影院在线观看| 国产精品中文| 欧美一区二区三区免费视频| 国产又粗又长视频| 7799精品视频| 国产丝袜视频在线观看| 日韩欧美久久久| 丰满人妻熟女aⅴ一区| 亚洲福利精品在线| 无码国产精品高潮久久99| 亚洲精品美女网站| 欧美日韩影视| 亚洲天堂开心观看| 337p日本欧洲亚洲大胆鲁鲁| 综合av色偷偷网| 头脑特工队2免费完整版在线观看 头脑特工队2在线播放 | 亚洲精品一区二区三| 日本不卡高清| 天堂v在线视频| 欧美日韩国产免费观看| 波多野结衣av一区二区全免费观看| 伊人久久大香线| 91九色丨porny丨国产jk| 99综合在线| 欧美在线观看视频网站| 蓝色福利精品导航| 91精品国产高清91久久久久久| 成人h版在线观看| 中文字幕丰满孑伦无码专区| 欧美激情综合五月色丁香| 久久久久久久久久97| 亚洲一区二区三区小说| 精品免费囯产一区二区三区| 欧美体内she精视频| jlzzjlzzjlzz亚洲人| 日韩毛片在线观看| 日本成a人片在线观看| 久久久久久综合网天天| 日韩在线影院| 91文字幕巨乱亚洲香蕉| 亚洲精品白浆高清| japanese在线视频| 国产亚洲精品v| 亚洲精品免费一区亚洲精品免费精品一区 | 牛牛视频精品一区二区不卡| 日本一区视频在线播放| 亚洲人metart人体| 成人一级片网站| 国产精品一区二区黑丝| www.自拍偷拍| 亚洲欧美日韩一区| 一级片在线观看免费| 欧美一级二级三级乱码| 久草在线青青草| 欧美激情视频在线免费观看 欧美视频免费一 | 欧美性猛交xxxx乱大交hd| 日韩三级av在线播放| freemovies性欧美| 8090成年在线看片午夜| 99久久久国产| 日本欧美色综合网站免费| 一区三区视频| 中文av字幕在线观看| 国产日韩精品久久久| 日韩欧美三级视频| 91麻豆精品国产无毒不卡在线观看| 亚洲欧美日韩成人在线| 欧美精品日韩www.p站| 国产成人精品一区二三区在线观看| 动漫一区二区在线| 四季av一区二区凹凸精品| 免费高清在线观看免费| 丰满放荡岳乱妇91ww| 青青操在线播放| 日韩欧美国产激情| 刘玥91精选国产在线观看| 精品国产欧美一区二区五十路| 波多视频一区| 精品国产aⅴ麻豆| 亚洲网站视频| 久久人人爽人人片| 中文字幕日韩一区| 成人黄色片在线观看| 精品亚洲一区二区| 日韩影院在线| 国产精品一区在线播放| 欧美日韩国产在线一区| 三日本三级少妇三级99| 国产精品嫩草影院com| 无码人妻丰满熟妇区五十路| 亚洲精品成人网| av男人的天堂在线观看| 成人区精品一区二区| 欧美韩国一区| 伊人av在线播放| 亚洲一区二区三区四区五区黄 | 九九视频精品免费| 欧美性猛交xxxx乱大交少妇| 欧美日韩精品高清| 日本免费中文字幕在线| 成人精品aaaa网站| 五月综合激情| 天天影视色综合| 亚洲欧美日韩一区二区| xxxx18国产| 欧美国产极速在线| 大陆精大陆国产国语精品 | www.99热| 欧美日韩久久一区二区| 看女生喷水的网站在线观看| 7777精品伊久久久大香线蕉语言| 亚洲国产一成人久久精品| 免费不卡av网站| 亚洲亚洲人成综合网络| 无码精品在线观看| 欧美在线视频观看免费网站| 免费成人网www| mm131国产精品| 亚洲免费大片在线观看| 亚洲美女综合网| 91国内在线视频| 国产亚洲欧美日韩在线观看一区二区 | 成人免费淫片视频软件| 欧美在线资源| 午夜不卡久久精品无码免费| 欧美日韩亚洲系列| 成人免费视频| 亚洲综合社区网| 99精品国产在热久久| 亚洲一二三精品| 日韩精品一区国产麻豆| 偷拍自拍在线看| 一区二区精品国产| 成人听书哪个软件好| 亚洲精品男人的天堂| 久久久国产成人精品| 欧美激情15p| 色一情一区二区| 亚洲成人一区在线| 搞黄视频在线观看| 97自拍视频| 日本免费新一区视频| 久久丫精品久久丫| 亚洲人成电影网站色| 免费看日产一区二区三区 | 久久久久资源| 国内精品国产三级国产a久久 |