成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

計(jì)算機(jī)視覺:使用 YOLOv8 創(chuàng)建交通熱力圖

開發(fā) 機(jī)器視覺
在計(jì)算機(jī)視覺領(lǐng)域,有許多技術(shù)可以解釋從視頻(錄制、流媒體或?qū)崟r(shí))中獲取的數(shù)據(jù)。在特定情況下,例如評(píng)估交通強(qiáng)度或某些對(duì)象(如人、車輛、動(dòng)物等)的行為區(qū)域時(shí),熱力圖成為一種非常有效的工具。

在一個(gè)由數(shù)據(jù)驅(qū)動(dòng)和導(dǎo)向的世界中,解釋、可視化并基于這些數(shù)據(jù)做出決策的能力變得越來越重要。這意味著,應(yīng)用正確的工具和技術(shù)可能決定一個(gè)項(xiàng)目的成敗。在計(jì)算機(jī)視覺領(lǐng)域,有許多技術(shù)可以解釋從視頻(錄制、流媒體或?qū)崟r(shí))中獲取的數(shù)據(jù)。在特定情況下,例如評(píng)估交通強(qiáng)度或某些對(duì)象(如人、車輛、動(dòng)物等)的行為區(qū)域時(shí),熱力圖成為一種非常有效的工具。

熱力圖基于顏色,通常暖色(如紅色、橙色和黃色)表示交通流量或密度較大的區(qū)域,而冷色(如藍(lán)色和綠色)表示交通流量或密度較低的區(qū)域。換句話說,這種技術(shù)可以收集大量數(shù)據(jù)并將其轉(zhuǎn)換為易于理解和直觀的可視化效果。如下例所示:

考慮到實(shí)際應(yīng)用,我們可以列舉一些場景,例如需要理解交通擁堵中的運(yùn)動(dòng)模式,或理解百貨商店或購物中心走廊中的消費(fèi)和運(yùn)動(dòng)模式。此外,還可以用于分析牧場中動(dòng)物的運(yùn)動(dòng)模式,尤其是在畜牧業(yè)中。

我們以一個(gè)包含3條道路的空中視頻為例,其中有一些汽車在行駛。我們的目標(biāo)是創(chuàng)建一條熱力圖,顯示道路上交通最密集的點(diǎn):

視頻鏈接:https://youtu.be/MNn9qKG2UFI?si=PQWXhDY48dis-Vxs

代碼實(shí)現(xiàn)

首先,我們需要導(dǎo)入所需的庫:

from collections import defaultdict
import cv2
import numpy as np
from ultralytics import YOLO

然后,我們聲明一個(gè)變量來加載訓(xùn)練好的YOLO模型。在我的例子中,我使用了一個(gè)“中等”模型。

model = YOLO('yolov8m.pt')

接下來,我們需要指定要分析的視頻路徑。

videopath = '/Path/Road traffic video.mp4'
cap = cv2.VideoCapture(videopath)

現(xiàn)在,我們創(chuàng)建一個(gè)空字典來存儲(chǔ)跟蹤位置(track_history),以及另一個(gè)字典來存儲(chǔ)每個(gè)對(duì)象的最后推斷位置(last_positions)。

track_history = defaultdict(lambda: [])
last_positions = {}

由于我們只考慮移動(dòng)的物體(例如,停放的汽車可能會(huì)干擾分析),我們創(chuàng)建了一個(gè)函數(shù)來計(jì)算兩點(diǎn)之間的歐幾里得距離(p1和p2,分別是幀A和幀B中的物體點(diǎn))。該距離使用勾股定理計(jì)算,返回兩點(diǎn)之間的直線距離。

def calculate_distance(p1, p2):
    return np.sqrt((p1[0] - p2[0]) ** 2 + (p1[1] - p2[1]) ** 2)

當(dāng)然,我們還需要初始化一個(gè)熱力圖。使用numpy創(chuàng)建一個(gè)矩陣,其中所有元素最初都為零。該矩陣還需要包含3個(gè)“層”,分別代表3個(gè)顏色通道(RGB)。

heatmap = np.zeros((int(cap.get(4)), int(cap.get(3)), 3), dtype=np.float32)

下一步是創(chuàng)建一個(gè)while循環(huán),逐幀處理視頻。

while cap.isOpened():
    success, frame = cap.read()

如果成功讀取幀,則使用YOLO模型進(jìn)行推理。請(qǐng)注意,我添加了跟蹤和持久性算法,這些算法在處理視頻(幀序列)時(shí)非常理想。此外,由于本例的重點(diǎn)是記錄汽車交通,我們只定義了類別2。

if success:
   results = model.track(frame, persist=True, classes=2)

如果有有效的檢測結(jié)果,我們需要將其記錄到歷史記錄中,同時(shí)獲取邊界框的坐標(biāo),并使用以下代碼更新熱力圖:

for box, track_id in zip(boxes, track_ids):
    x_center, y_center, width, height = box
    current_position = (float(x_center), float(y_center))

    top_left_x = int(x_center - width / 2)
    top_left_y = int(y_center - height / 2)
    bottom_right_x = int(x_center + width / 2)
    bottom_right_y = int(y_center + height / 2)

    top_left_x = max(0, top_left_x)
    top_left_y = max(0, top_left_y)
    bottom_right_x = min(heatmap.shape[1], bottom_right_x)
    bottom_right_y = min(heatmap.shape[0], bottom_right_y)

    track = track_history[track_id]
    track.append(current_position)
    if len(track) > 1200:
        track.pop(0)

為了檢查物體是否在移動(dòng),我們使用calculate_distance函數(shù)計(jì)算最后一個(gè)記錄點(diǎn)與當(dāng)前點(diǎn)之間的距離。如果距離達(dá)到最小值,則將其記錄到熱力圖中。

    last_position = last_positions.get(track_id)
    if last_position and calculate_distance(last_position, current_position) > 5:
        heatmap[top_left_y:bottom_right_y, top_left_x:bottom_right_x] += 1
  
    last_positions[track_id] = current_position

隨著移動(dòng)物體的跟蹤點(diǎn)被記錄,出于美觀原因,我們?cè)跓崃D上添加了高斯模糊濾鏡。

 heatmap_blurred = cv2.GaussianBlur(heatmap, (15, 15), 0)

然后,我們對(duì)熱力圖進(jìn)行歸一化處理,并在原始視頻幀上疊加顏色,以使其更直觀。

  heatmap_norm = cv2.normalize(heatmap_blurred, None, 0, 255, cv2.NORM_MINMAX, dtype=cv2.CV_8U)
  heatmap_color = cv2.applyColorMap(heatmap_norm, cv2.COLORMAP_JET)

  alpha = 0.7
  overlay = cv2.addWeighted(frame, 1 - alpha, heatmap_color, alpha, 0)

  cv2.imshow("Traffic Heatmap", overlay)

最后,我們?yōu)閣hile循環(huán)添加一個(gè)退出鍵,并在視頻結(jié)束時(shí)使用cap.release()和cv2.destroyAllWindows()關(guān)閉循環(huán)。

    if cv2.waitKey(1) & 0xFF == ord("q"):
        break
    else:
        break

cap.release()
cv2.destroyAllWindows()

結(jié)果

運(yùn)行代碼后,我們會(huì)看到一個(gè)窗口打開,屏幕上應(yīng)用了藍(lán)色背景(熱力圖濾鏡)。當(dāng)YOLO模型檢測到汽車時(shí),濾鏡值會(huì)根據(jù)汽車的強(qiáng)度和數(shù)量進(jìn)行更新,并用更熱的顏色突出顯示。

責(zé)任編輯:趙寧寧 來源: 小白玩轉(zhuǎn)Python
相關(guān)推薦

2024-01-29 09:29:02

計(jì)算機(jī)視覺模型

2023-07-07 10:53:08

2022-07-21 12:25:54

智慧交通人工智能物聯(lián)網(wǎng)

2023-06-26 10:44:42

2023-04-04 08:25:31

計(jì)算機(jī)視覺圖片

2024-09-12 17:19:43

YOLO目標(biāo)檢測深度學(xué)習(xí)

2025-05-26 08:36:25

Gemini模型聊天機(jī)器人Gemini

2019-12-11 13:24:57

深度學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)軟件

2021-05-19 09:00:00

人工智能機(jī)器學(xué)習(xí)技術(shù)

2023-09-04 15:15:17

計(jì)算機(jī)視覺人工智能

2024-05-15 09:16:05

2025-02-24 09:50:21

2020-08-04 10:24:50

計(jì)算機(jī)視覺人工智能AI

2024-03-01 10:08:43

計(jì)算機(jī)視覺工具開源

2020-11-05 13:50:23

計(jì)算機(jī)視覺

2024-07-22 13:49:38

YOLOv8目標(biāo)檢測開發(fā)

2020-12-24 13:44:14

計(jì)算機(jī)互聯(lián)網(wǎng) 技術(shù)

2024-10-10 17:05:00

2024-08-27 12:40:59

2024-03-26 10:38:16

計(jì)算機(jī)視覺人工智能
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 久久欧美精品 | 国产精品久久久久久婷婷天堂 | 91极品视频| 综合久久久| 日韩精品一区二区三区在线观看 | 日韩黄色av | 国产区精品在线观看 | 亚洲激情一区二区 | 欧美色综合一区二区三区 | 91在线区| 国产欧美在线 | 欧美综合视频在线 | 国产精品精品久久久 | 成人精品一区二区户外勾搭野战 | 亚洲精品国产偷自在线观看 | 亚洲一区中文字幕 | 成人免费福利 | 久久99精品国产麻豆婷婷 | 国产免费播放视频 | 亚洲网站在线播放 | 天天综合干| 亚洲国产精品久久久 | 日本精品一区二区在线观看 | 中文字幕av在线 | 欧美日本韩国一区二区三区 | 成年人在线视频 | 亚洲精品久久久久久国产精华液 | av在线免费观看网址 | 日韩精品网站 | 国产精品久久久久久 | 91精品国产高清一区二区三区 | 亚洲免费视频一区二区 | 久久99精品久久久久久秒播九色 | 亚洲一区二区av | 国产激情视频在线 | 欧美精品成人 | 国产精品激情在线 | 黄色三级毛片 | 成人综合久久 | 亚洲福利在线观看 | 中文成人无字幕乱码精品 |