Ubuntu上OpenCV2的視頻編碼與解碼

小樊
93
2024-09-05 18:34:27

在Ubuntu上使用OpenCV2進(jìn)行視頻編碼和解碼,你需要首先安裝OpenCV庫

  1. 安裝依賴項(xiàng):
sudo apt-get update
sudo apt-get install build-essential cmake git pkg-config libavcodec-dev libavformat-dev libswscale-dev
  1. 克隆OpenCV和OpenCV_contrib倉庫:
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git
  1. 進(jìn)入opencv目錄并創(chuàng)建一個(gè)名為build的文件夾:
cd opencv
mkdir build
cd build
  1. 運(yùn)行cmake并指定opencv_contrib模塊的路徑:
cmake -D CMAKE_BUILD_TYPE=RELEASE \
      -D CMAKE_INSTALL_PREFIX=/usr/local \
      -D INSTALL_C_EXAMPLES=ON \
      -D INSTALL_PYTHON_EXAMPLES=ON \
      -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
      -D BUILD_EXAMPLES=ON ..
  1. 編譯并安裝OpenCV:
make -j4    # -j4表示使用4個(gè)內(nèi)核進(jìn)行編譯,根據(jù)你的CPU核心數(shù)調(diào)整
sudo make install
sudo ldconfig

現(xiàn)在你已經(jīng)安裝了OpenCV庫,可以開始進(jìn)行視頻編碼和解碼。以下是一個(gè)簡(jiǎn)單的Python示例,展示了如何使用OpenCV2讀取、編碼和保存視頻:

import cv2

# 讀取視頻
video = cv2.VideoCapture('input_video.mp4')

# 獲取視頻的寬度和高度
width = int(video.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(video.get(cv2.CAP_PROP_FRAME_HEIGHT))

# 創(chuàng)建一個(gè)視頻寫入器
fourcc = cv2.VideoWriter_fourcc(*'XVID')  # 選擇視頻編碼格式
out = cv2.VideoWriter('output_video.avi', fourcc, 20.0, (width, height))

while True:
    # 讀取視頻幀
    ret, frame = video.read()

    if not ret:
        break

    # 將幀寫入輸出視頻
    out.write(frame)

    # 顯示幀(可選)
    cv2.imshow('Frame', frame)

    # 按'q'鍵退出
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 釋放資源
video.release()
out.release()
cv2.destroyAllWindows()

這個(gè)示例將讀取名為input_video.mp4的視頻文件,然后使用XVID編碼器將其保存為output_video.avi。你可以根據(jù)需要修改輸入和輸出文件名以及編碼器設(shè)置。

0