Like Share Discussion Bookmark Smile

J.J. Huang   2026-01-14   Python OpenCV 02.入門篇:基礎操作   瀏覽次數:次   DMCA.com Protection Status

Python | OpenCV 影片屬性與資訊查詢

📚 前言

在前一章我們學會了如何查詢圖片的屬性。
這一篇要進一步學習 影片屬性與資訊查詢,理解如何取得影片的大小、總影格數、FPS、編碼器等基本資訊。

🎬 基本屬性

  • CAP_PROP_FRAME_COUNT:影片總影格數
  • CAP_PROP_FPS:每秒影格數
  • CAP_PROP_FRAME_WIDTH:影片寬度
  • CAP_PROP_FRAME_HEIGHT:影片高度
  • CAP_PROP_FOURCC:編碼器代碼
  • CAP_PROP_POS_FRAMES:目前影格位置

範例程式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import cv2

cap = cv2.VideoCapture("video.mp4")

frame_count = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
fps = cap.get(cv2.CAP_PROP_FPS)
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fourcc = int(cap.get(cv2.CAP_PROP_FOURCC))

print("總影格數:", frame_count)
print("FPS:", fps)
print("解析度:", width, "x", height)
print("編碼器:", fourcc)

cap.release()


圖:輸出影片的基本屬性

📑 可取得的影片屬性列表

在 OpenCV 中,使用 cap.get() 方法可以查詢影片的各種屬性。以下是常見屬性與對應編號:

編號 屬性名稱 說明
0 CAP_PROP_POS_MSEC 影片目前播放的毫秒數
1 CAP_PROP_POS_FRAMES 目前影格索引值 (從 0 開始)
2 CAP_PROP_POS_AVI_RATIO 播放相對位置 (0=開始, 1=結束)
3 CAP_PROP_FRAME_WIDTH 影片寬度
4 CAP_PROP_FRAME_HEIGHT 影片高度
5 CAP_PROP_FPS 每秒影格數
6 CAP_PROP_FOURCC 編解碼器 FourCC 代碼
7 CAP_PROP_FRAME_COUNT 總影格數
8 CAP_PROP_FORMAT 影片格式
9 CAP_PROP_MODE 擷取模式
10 CAP_PROP_BRIGHTNESS 攝影機亮度
11 CAP_PROP_CONTRAST 攝影機對比度
12 CAP_PROP_SATURATION 攝影機飽和度
13 CAP_PROP_HUE 攝影機色調
14 CAP_PROP_GAIN 攝影機增益
15 CAP_PROP_EXPOSURE 攝影機曝光度
16 CAP_PROP_CONVERT_RGB 是否轉換為 RGB

👉 常用的屬性是 寬度、高度、FPS、總影格數、編碼器,其他屬性多半與攝影機參數有關。

🔍 進階分析

除了基本屬性之外,影片還能進一步分析:

  • 影片長度:總影格數 ÷ FPS = 秒數
  • 目前影格位置:可用於逐格處理或跳轉
  • 編碼器轉換:將 FourCC 整數轉換為字串,方便辨識影片格式

範例程式:編碼器轉換

1
2
3
4
5
6
7
8
9
10
import cv2

cap = cv2.VideoCapture("video.mp4")
fourcc = int(cap.get(cv2.CAP_PROP_FOURCC))

# 將整數轉換為字串
codec = "".join([chr((fourcc >> 8 * i) & 0xFF) for i in range(4)])
print("編碼器:", codec)

cap.release()


圖:影片編碼器轉換顯示

🧩 FourCC 位元拆解示例

範例一:1983148141 → mp4v

整數值:1983148141
16 進位表示:0x7634706D

位移 (i) 運算式 (fourcc >> 8*i) & 0xFF 十進位值 對應字元
i = 0 (1983148141 >> 0) & 0xFF 109 ‘m’
i = 1 (1983148141 >> 8) & 0xFF 112 ‘p’
i = 2 (1983148141 >> 16) & 0xFF 52 ‘4’
i = 3 (1983148141 >> 24) & 0xFF 118 ‘v’

👉 組合結果:"mp4v"

範例二:1668703592 → hevc

整數值:1668703592
16 進位表示:0x63766568

位移 (i) 運算式 (fourcc >> 8*i) & 0xFF 十進位值 對應字元
i = 0 (1668703592 >> 0) & 0xFF 104 ‘h’
i = 1 (1668703592 >> 8) & 0xFF 101 ‘e’
i = 2 (1668703592 >> 16) & 0xFF 118 ‘v’
i = 3 (1668703592 >> 24) & 0xFF 99 ‘c’

👉 組合結果:"hevc" (High Efficiency Video Coding, H.265)

⚠️ 注意事項

  • 編碼器顯示問題CAP_PROP_FOURCC 可能會顯示為整數,需要轉換成字串才能看懂。
  • 跨平台差異:不同平台對影片屬性支援度不同,需測試。
  • 影片長度計算:總影格數 ÷ FPS = 影片秒數。

🎯 結語

這一篇我們學會了如何查詢影片的基本屬性,包括總影格數、FPS、解析度與編碼器,並進一步分析影片長度與編碼器轉換。
接下來我們將回到圖片處理篇,下一篇將進一步學習 灰階化與色彩空間轉換,掌握圖片處理的更多技巧。


註:以上參考了
OpenCV Tutorials
OpenCV-Python Tutorials