Python下獲取視訊的旋轉角度資訊
1. 描述
使用手機等電子產品錄製的視訊在電腦上播放的時候是正的,但是使用OpenCV庫進行讀取的時候卻是另外的角度,這是因為OpenCV在讀取視訊資料的時候沒有去考慮視訊內部儲存的TAG資訊(其中包含旋轉角度等),但是使用OpenCV庫卻無法獲取視訊的旋轉角度資訊。對此,可以使用python包scikit-video
進行獲取。
安裝scikit-video
:
pip install scikit-video
2. 參考程式碼
import cv2
import skvideo.io
# 得到旋轉角度之後,對視訊幀旋轉對應的負角度便可以得到正向的影像
def rotate_img_data(img_data, degree):
h, w = img_data.shape[:2]
(cx, cy) = (w / 2, h / 2)
# 設定旋轉矩陣
M = cv2.getRotationMatrix2D((cx, cy), -degree, scale=1.0)
cos = np.abs(M[0, 0])
sin = np.abs(M[0, 1])
# 計算影像旋轉後的新邊界
nW = int((h * sin) + (w * cos))
nH = int((h * cos) + (w * sin))
# 調整旋轉矩陣的移動距離(t_{x}, t_{y})
M[0, 2] += (nW / 2) - cx
M[1, 2] += (nH / 2) - cy
img_rotated = cv2.warpAffine(img_data, M, (nW, nH))
return img_rotated
if __name__ == "__main__":
file_name = "test.MOV"
# get video info(rotate)
video_metadata = skvideo.io.ffprobe(file_name)
video_tag_info = video_metadata['video']['tag']
rotate_degree_info = -1.0
for tag_info in video_metadata['video']['tag']:
for key, val in tag_info.items():
if val == "rotate":
rotate_degree_info = float(tag_info["@value"])
print("Info: video rotate degree info:{}".format(rotate_degree_info))
break
# read video sequence
video_io = cv2.VideoCapture(file_name)
all_frame_nums = video_io.get(cv2.CAP_PROP_FRAME_COUNT)
read_status, video_frame = video_io.read()
while read_status:
# rotate the image if needs
if abs(-1.0 - rotate_degree_info) > 1.0:
video_frame = rotate_img_data(video_frame.copy(), rotate_degree_info)
read_status, video_frame = video_io.read()
PS:其中旋轉部分程式碼來自:正確使用OpenCV和Python旋轉影像
相關文章
- opencv python 從攝像頭獲取視訊/從檔案獲取視訊 /儲存視訊OpenCVPython
- JS獲取照片拍攝的角度屬性,用於旋轉控制JS
- 【Python】獲取機器使用資訊Python
- 視訊播放器全屏旋轉方案播放器
- Tipard Video Converter Ultimate如何旋轉視訊?IDE
- 小程式視訊旋轉的相關問題
- 【玩具】獲取B站視訊的音訊片段音訊
- 使用Python獲取ECS相關資訊Python
- 【Python小隨筆】 SSH 獲取資訊Python
- 獲取位置資訊
- iOS 獲取視訊圖片iOS
- 獲取本地圖片/視訊地圖
- python 爬取騰訊視訊的全部評論Python
- JAVA通過URL連結獲取視訊檔案資訊(無需下載檔案)Java
- 分享下 PHP 使用 getID3 來獲取音訊、視訊等媒體檔案相關資訊PHP音訊
- .net core Docker 容器新增ffmpeg 獲取視訊資訊和截圖Docker
- Python呼叫ansible API系列(一)獲取資產資訊PythonAPI
- Android CameraX ImageAnalysis 獲取視訊幀Android
- 前端獲取視訊編碼格式前端
- Python爬取動態載入的視訊(梨視訊,xpath)Python
- Linux: 獲取硬碟的UUID資訊Linux硬碟UI
- 獲取.crt證書的資訊
- Python獲取IP地址對應的地理位置資訊!Python
- 『OpenCV-Python』獲取圖片的基本引數資訊OpenCVPython
- python-help()獲取關於物件的幫助資訊Python物件
- OpenCV-Python 視訊讀取OpenCVPython
- Oracle獲取所有表名資訊和獲取指定表名欄位資訊Oracle
- 使用捕獲 獲取身份證號的資訊
- python 呼叫 shell ,獲取返回值和返回資訊Python
- python使用ldap3獲取使用者資訊PythonLDA
- iOS獲取SIM卡資訊iOS
- 獲取AFP服務資訊
- iphone 獲取地址的詳細資訊iPhone
- 資訊爆炸時代,如何獲取優質資訊?
- 利用DBMS_METADATA包獲取許可權資訊(轉)
- python+ffmpeg視訊轉碼轉格式Python
- Python 系統資源資訊獲取工具,你用過沒?Python
- Python 爬蟲獲取網易雲音樂歌手資訊Python爬蟲