精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

成人免费视频国产免费| 最新av免费在线观看| 农村少妇久久久久久久| 老司机一区二区三区| 在线看福利67194| 色噜噜狠狠一区二区三区狼国成人| a视频在线观看免费| 波波电影院一区二区三区| 欧美最顶级的aⅴ艳星| 国产精品18在线| 成功精品影院| 欧美日韩国产美| 久久久久99精品成人片| 成人精品一区| 成人午夜精品在线| 国产精品中文字幕久久久| 波多野结衣家庭教师| 自拍自偷一区二区三区| 制服丝袜一区二区三区| 国产淫片av片久久久久久| 2024最新电影免费在线观看 | 日本精品久久久| 午夜剧场免费在线观看| 久久99国产精品视频| 精品久久久久久综合日本欧美| 日本精品久久久久中文字幕| 欧美人与动牲性行为| 欧美激情在线免费观看| 精品欧美日韩| 亚洲国产综合网| 精品一区二区三区视频在线观看 | 91色在线porny| 91入口在线观看| 一级做a爰片久久毛片16| 噜噜爱69成人精品| 久久免费视频观看| 国产盗摄一区二区三区在线| 第一会所sis001亚洲| 亚洲欧洲免费视频| 免费看毛片的网站| 99re8这里有精品热视频免费| 欧美疯狂性受xxxxx喷水图片| 无码日韩人妻精品久久蜜桃| 亚洲精品一级二级| 欧美日韩一区二区在线| 分分操这里只有精品| 麻豆av在线播放| 亚洲综合色婷婷| 国产树林野战在线播放| 99热国产在线中文| 亚洲欧美国产毛片在线| 女女百合国产免费网站| 无遮挡的视频在线观看| 中文字幕在线播放不卡一区| 色噜噜一区二区| 国产高清免费av在线| 日本一区二区三区四区| 亚洲不卡中文字幕| 国产在线小视频| 国产天堂亚洲国产碰碰| 午夜一区二区三区| 在线播放日本| 亚洲女同一区二区| av日韩在线看| 国模精品视频| 色综合久久综合网| 久久国产色av免费观看| 成人h在线观看| 欧美蜜桃一区二区三区 | 成人免费观看av| 国产精品一区在线播放| 四虎影院在线域名免费观看| 久久嫩草精品久久久久| 亚洲精品国产精品国自产观看 | 亚洲欧洲成人自拍| 国产一二三四区在线观看| 四虎影视国产在线视频| 亚洲成年人影院| 男人亚洲天堂网| 国产a亚洲精品| 日韩视频永久免费| 黄色国产在线观看| 久久激情电影| 欧美精品18videos性欧美| 午夜精品久久久久久久久久久久久蜜桃| 久久国产日韩| 成人黄色片在线| 秋霞欧美在线观看| 国产日韩欧美制服另类| 99re99热| 综合另类专区| 欧美一区二区三区不卡| 中文字幕三级电影| 青青草原综合久久大伊人精品| 欧美另类精品xxxx孕妇| 国产又黄又粗又爽| 韩国理伦片一区二区三区在线播放 | 亚洲欧美日本精品| 青花影视在线观看免费高清| 在线一区视频| 亚洲综合精品伊人久久| 亚洲色偷精品一区二区三区| 18涩涩午夜精品.www| 成人性生活视频免费看| 成人性片免费| 日韩av在线一区| 老熟妇高潮一区二区三区| 99精品视频免费观看| 91免费国产网站| 免费国产在线观看| 亚洲三级电影全部在线观看高清| 中文字幕日本最新乱码视频| 日韩av综合| 中文字幕日韩精品有码视频| www.国产高清| 风流少妇一区二区| 一本一生久久a久久精品综合蜜| 麻豆mv在线观看| 日韩一级免费一区| 国产成人在线网址| 久久精品中文| 国产一区二区三区四区hd| 久操视频在线| 欧美日韩一区二区三区不卡| 在线观看福利片| 亚洲精品日韩久久| 成人h视频在线观看| 国产激情在线视频| 欧美久久久久免费| 极品蜜桃臀肥臀-x88av| 久久久久免费| 久久精品第九区免费观看| 欧美xxxx免费虐| 欧美一级国产精品| 亚洲天堂一级片| 久久99国产精品麻豆| 亚洲国产精品综合| 日本肉肉一区| 中文字幕亚洲欧美一区二区三区| 亚洲大片免费观看| 91毛片在线观看| 国产午夜福利视频在线观看| 里番精品3d一二三区| 久久人人爽人人| 亚洲免费视频网| 亚洲国产综合在线| 最新日本中文字幕| 亚洲精品少妇| 久久大香伊蕉在人线观看热2| 99久久精品免费看国产小宝寻花| 精品国产精品网麻豆系列 | 都市激情亚洲色图| 女同毛片一区二区三区| 亚洲欧美卡通另类91av| 久久99久久精品国产| 不卡一二三区| 亚洲午夜激情免费视频| 在线免费观看视频网站| 亚洲欧洲成人av每日更新| 亚欧精品在线视频| 国产一区二区三区自拍| 久久久com| 韩国精品主播一区二区在线观看| 在线播放亚洲激情| 国产精品伊人久久| 亚洲老妇xxxxxx| 人妻av一区二区| 久久久久国产一区二区| 亚洲天堂电影网| 欧美第一在线视频| 国产做受69高潮| 国产高清在线观看| 日韩一级片在线观看| 久久久久久久久久影院| 国产视频911| 天天色天天综合网| 国语自产精品视频在线看8查询8| 精品欧美国产一区二区三区不卡| 免费观看欧美大片| 色哟哟网站入口亚洲精品| 国产日韩欧美一区二区东京热 | 国产日韩三级| 日韩av片电影专区| 黄色网页在线免费看| 亚洲成人1234| 中文天堂在线播放| 亚洲一区二区三区国产| 黄免费在线观看| 国产福利不卡视频| 国产福利视频在线播放| 国产精品99一区二区三| 精品一区二区国产| 亚洲成人1区| 91成人在线观看国产| 永久免费在线观看视频| 亚洲成人亚洲激情| 中文字幕制服诱惑| 亚洲6080在线| 极品美妇后花庭翘臀娇吟小说| 99久久精品免费看国产免费软件| 国产超碰在线播放| 亚洲毛片av| 中文字幕免费在线不卡| 亚州精品视频| 成人动漫视频在线观看完整版| 成人免费网站www网站高清| 欧美激情高清视频| 日韩伦理在线电影| 亚洲免费小视频| www.欧美国产| 欧美三级日韩三级| 美日韩一二三区| 一个色综合网站| 强制高潮抽搐sm调教高h| 久久久精品国产免大香伊| 亚洲av人人澡人人爽人人夜夜| 久99久精品视频免费观看| 日本精品一区在线观看| 极品中文字幕一区| 一区二区免费在线观看| 欧美女优在线视频| 精品欧美国产| 国产精品美女在线观看直播| 亚洲永久在线观看| 日本久久一区| 国产精品一区二区久久| 韩国久久久久久| 91av在线国产| 17videosex性欧美| 欧美—级a级欧美特级ar全黄| 国产婷婷视频在线| 国语自产精品视频在线看一大j8| 好吊日在线视频| 国产女人18水真多18精品一级做 | 中文字幕一区在线播放| 一区二区激情视频| 182在线观看视频| 国产精品女主播av| 国产破处视频在线观看| 欧美激情综合在线| 中文字幕在线观看免费高清| 久久久久久久久久久久久夜| 国产精品久久不卡| 不卡视频一二三| 中国极品少妇videossexhd| 成人丝袜18视频在线观看| 18禁一区二区三区| 国产精品一区2区| 欧美午夜精品一区二区| 福利一区在线观看| 老司机午夜免费福利| 成人免费视频播放| 亚洲 欧美 日韩在线| 波多野结衣在线一区| 欧美bbbbb性bbbbb视频| 久久久国产精华| 免费在线观看a视频| 国产精品久久久久久久久免费相片| 四虎国产精品永久在线国在线| 亚洲精品720p| 亚洲黄色小说网址| 亚洲精品动漫久久久久| 偷拍自拍在线| 亚洲色图50p| av大片在线播放| 久久精品一区中文字幕| 欧美韩日亚洲| 777精品视频| 日本电影欧美片| 国产国产精品人在线视| 成人国产激情在线| 91亚洲国产精品| 国产色噜噜噜91在线精品| 欧美连裤袜在线视频| 久久综合av| a级黄色片免费| 亚洲看片一区| 一区二区三区入口| 国产另类ts人妖一区二区| 免费看黄色片的网站| 国产亚洲综合av| 一区二区三区四区五区| 精品成人国产在线观看男人呻吟| 无码人妻精品一区二区三区蜜桃91| 欧美日韩精品欧美日韩精品一| 精品久久无码中文字幕| 亚洲欧美日韩第一区| 国产激情在线观看| 97国产精品视频人人做人人爱| 成人不卡视频| 国产伦精品一区二区三区高清版 | 亚洲不卡系列| 91最新在线免费观看| 亚洲国产精品嫩草影院久久av| 伊人久久大香线蕉午夜av| 亚洲韩日在线| 亚洲免费av一区| 久久综合999| 午夜69成人做爰视频| 在线观看日韩国产| 成 人 免费 黄 色| 在线播放日韩精品| 欧美日韩国产观看视频| 亚洲自拍高清视频网站| blacked蜜桃精品一区| 日本午夜激情视频| 精品一区二区在线免费观看| 少妇精品一区二区| 亚洲女人的天堂| www.亚洲激情| 日韩不卡在线观看| www在线免费观看视频| 国产精品成人免费电影| 老司机在线精品视频| 真人做人试看60分钟免费| 免费观看30秒视频久久| 日本xxx在线播放| 亚洲在线观看免费| 国产毛片久久久久| 夜夜嗨av一区二区三区免费区| 极品美鲍一区| av免费精品一区二区三区| 日韩dvd碟片| 国产一级特黄a大片免费| 91麻豆蜜桃一区二区三区| 国产一级特黄视频| 欧美一区二区在线视频| 三级外国片在线观看视频| 国产999精品久久久| 国产在线播放精品| 国产 欧美 日本| 国产福利91精品| 欧美黑人猛猛猛| 欧美一区二区三区在线观看| 色的视频在线免费看| 国产伦精品一区二区三区精品视频| 国产一区二区三区不卡视频网站| 噜噜噜久久亚洲精品国产品麻豆| 成人黄色网址在线观看| 国产一级中文字幕| 日韩精品一区二区在线观看| 18av在线播放| 3d动漫精品啪啪一区二区三区免费| 99久久激情| www.超碰97.com| 日韩毛片一二三区| 国产99久久九九精品无码免费| 久久亚洲精品一区二区| **日韩最新| 国产成人免费高清视频| 国产一区二区不卡在线| 欧美成人三级在线观看| 欧美变态tickling挠脚心| 久草在线视频资源| 国产在线观看一区| 午夜一区二区三区不卡视频| 成人性生交大免费看| 色94色欧美sute亚洲线路一ni | 国产精品视频黄色| 欧美激情一区在线观看| 国产乱叫456在线| 久久69精品久久久久久国产越南| 亚洲精品在线播放| 青青草视频在线免费播放 | 欧美日韩一区二区视频在线| 久久久久一区| 久久精品一区二区三区四区五区| 91精品国产欧美日韩| 丰满的护士2在线观看高清| 精品伦理一区二区三区| 日韩主播视频在线| 国产精品成人69xxx免费视频| 日韩精品专区在线影院重磅| 超碰在线公开| 污视频在线免费观看一区二区三区| 久久 天天综合| 日本五十熟hd丰满| 一本色道久久综合狠狠躁篇怎么玩 | 午夜在线成人av| 国产一二三区在线视频| 91免费人成网站在线观看18| 亚洲婷婷在线| 日本污视频网站| 精品欧美一区二区三区精品久久| 亚洲精品国产精品国产| 在线视频一二三区| av成人动漫在线观看| 中文字幕在线观看你懂的| 欧美激情免费看| 精品国产一区二区三区| 青娱乐精品在线| 色婷婷国产精品久久包臀| 成人免费看片| 欧美精品在线一区| 懂色中文一区二区在线播放| 中文字幕乱码人妻无码久久| 久久久视频免费观看| 99久久99视频只有精品| www.色多多| 精品国产成人在线影院|