視頻轉GIF

視頻轉GIF

以下是一個使用 Python 將視頻轉換為 GIF 的腳本,使用了 imageioopencv-python 庫:

import cv2
import imageio
import numpy as np
"""將視頻轉換為GIF圖參數:video_path -- 輸入視頻的路徑gif_path -- 輸出GIF的路徑fps -- GIF的幀率,默認為15width -- 輸出GIF的寬度,默認為720
"""
def video_to_gif(video_path, gif_path, fps=10, width=128):#    打開視頻文件cap = cv2.VideoCapture(video_path)if not cap.isOpened():print(f"無法打開視頻文件:{video_path}")return# 獲取視頻的原始寬度和高度original_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))original_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))# 計算新的高度以保持高寬比height = int(original_height * width / original_width)# 創建一個列表來存儲GIF幀frames = []while True:ret, frame = cap.read()if not ret:break# 調整幀大小resized_frame = cv2.resize(frame, (width, height))# 轉換為RGB格式(OpenCV使用BGR)rgb_frame = cv2.cvtColor(resized_frame, cv2.COLOR_BGR2RGB)# 添加到幀列表frames.append(rgb_frame)# 釋放視頻資源cap.release()# 保存為GIFimageio.mimsave(gif_path, frames, 'GIF', fps=fps)print"G(fIF已成功保存到:{gif_path}")if __name__ == "__main__":# 視頻路徑和輸出GIF路徑video_path = 'input.mp4'  # 輸入你的視頻文件路徑gif_path = 'output.gif'   # 輸出的GIF文件路徑# 轉換為GIFvideo_to_gif(video_path, gif_path)

這個腳本的工作流程如下:

  1. 使用 cv2.VideoCapture 打開視頻文件
  2. 獲取視頻的原始尺寸,并根據寬度目標計算新的高度以保持寬高比
  3. 循環讀取視頻的每一幀
  4. 對每一幀進行調整大小和顏色格式轉換
  5. 將所有處理后的幀存儲在一個列表中
  6. 使用 imageio.mimsave 將幀列表保存為GIF文件

使用方法:

  1. 安裝必要的庫:

    pip install opencv-python imageio numpy
    
  2. 修改代碼中的 video_pathgif_path 變量為你自己的輸入和輸出文件路徑

你可以調整以下參數來自定義輸出:

  • fps: 設置GIF的幀率(默認為15)
  • width: 設置輸出GIF的寬度(默認為128)
    你還可以通過修改 frames.append() 前的代碼來添加額外的處理,比如添加文字、調整對比度等

注意:轉換后的GIF文件可能會比較大,如果原視頻很長或者分辨率很高,你可能需要調整這些參數來控制輸出文件的大小。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/81670.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/81670.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/81670.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

計算機網絡:詳解TCP協議(四次握手三次揮手)

目錄 1.Tcp協議介紹 1.1 Tcp協議層級 1.2 TCP協議的格式 2. 確認應答機制 2.1 確認應答 2.2 序號字段 2.3 捎帶應答 3. 流量控制 4. 三次握手 四次揮手 4.1 認識標志位 4.2 簡單認識 4.3 三次揮手 4.4 四次揮手 1.Tcp協議介紹 1.1 Tcp協議層級 計算機網絡&#x…

小程序 IView WeappUI組件庫(簡單增刪改查)

IView Weapp 微信小程序UI組件庫:https://weapp.iviewui.com/components/card IView Weapp.png 快速上手搭建 快速上手.png iView Weapp 的代碼 將源代碼下載下來,然后將dict放到自己的項目中去。 iView Weapp 的代碼.png 小程序中添加iView Weapp 將di…

用java實現一個簡單的sql select 解析器,無需第三方依賴,完全從0開始

以下是一個簡單的 SQL SELECT 解析器的 Java 實現,支持單表查詢和基本條件過濾。代碼包含詞法分析和語法分析模塊,并支持以下語法: SELECT column1, column2 FROM table WHERE column3 5 完整代碼 1. Token 類型定義 (TokenType.java) pu…

阿里云 CentOS YUM 源配置指南

阿里云 CentOS YUM 源配置指南 在使用 CentOS 7 時,由于 CentOS 官方源停止維護等原因,yum install 命令可能會報錯 “Cannot find a valid baseurl for repo: centos-sclo-rh/x86_64”。以下是通過更換阿里云源解決該問題的詳細步驟。 一、備份原有配…

Learning vtkjs之ThresholdPoints

過濾器 閾值過濾器 介紹 vtkThresholdPoints - 提取滿足閾值條件的點 vtkThresholdPoints 是一個過濾器,它從數據集中提取滿足閾值條件的點。該條件可以采用三種形式: 1)大于特定值; 2) 小于特定值; 3) 在特定值之間…

記錄ruoyi-flowable-plus第一次運行流程報錯

記錄ruoyi-flowable-plus第一次運行流程報錯 錯誤步驟 1.啟動ruoyi-flowable-plus 正常登錄后,打開流程分類然后點擊新增按鈕,新增了一個分類。增加成功后, 再點擊流程分類,報錯。 錯誤提示 org.springframework.cglib.core.C…

Java中的stream流介紹與使用

一、Stream 的基礎概念 定義與特性 Stream 是單向數據流,對集合或數組進行高效處理,不存儲數據,而是通過操作鏈生成新 Stream。不可變性:原始數據源不被修改,所有操作均返回新 Stream。延遲執行:中間操作&a…

OCR身份證識別(正反面)_個人證照OCR識別_開放API接口使用指南

一、接口簡介 在數字化時代,快速準確地提取身份證信息變得尤為重要。**萬維易源提供的“身份證OCR識別”API接口,能夠快速提取二代居民身份證正反面的所有字段信息,包括姓名、性別、民族、出生日期、住址、身份證號、簽發機關、有效期限等。…

25年新版潮乎盲盒系統源碼 盲盒商城系統前端分享

盲盒系統市場的前景一直都很不錯,最近很多問我有沒有盲盒源碼的客戶,下面給大家分享一個新版潮乎盲盒源碼! 這款盲盒源碼系統 前端Uniapp 后端使用了Laravel框架進行開發。Laravel是一個流行的PHP框架,具有強大的功能和易于使用的…

Transformer四模型回歸打包(內含NRBO-Transformer-GRU、Transformer-GRU、Transformer、GRU模型)

Transformer四模型回歸打包(內含NRBO-Transformer-GRU、Transformer-GRU、Transformer、GRU模型) 目錄 Transformer四模型回歸打包(內含NRBO-Transformer-GRU、Transformer-GRU、Transformer、GRU模型)預測效果基本介紹程序設計參…

Axure疑難雜癥:利用中繼器制作三級下拉菜單(邏輯判斷進階)

親愛的小伙伴,在您瀏覽之前,煩請關注一下,在此深表感謝! Axure產品經理精品視頻課已登錄CSDN可點擊學習https://edu.csdn.net/course/detail/40420 課程主題:三級下拉菜單 主要內容:條件篩選時的邏輯判斷思維,中繼器使用 應用場景:復合條件下的下拉列表制作 案例展…

Nginx 核心功能之正反代理

目錄 一、Nginx 二、正向代理 三、反向代理 四、Nginx 緩存 1. 緩存功能的核心原理和緩存類型 2. 代理緩存功能設置 五、Nginx rewrite和正則 (1)Nginx 正則 (2)nginx location (3)Rewrite &…

ssh連接云服務器記錄

文章目錄 1. 背景2. ssh連接2.1 win 下通過終端工具進行連接2.2 Linux下通過ssh指令連接2.3 ssh使用publickey來連接 ssh連接云服務器記錄 1. 背景 最近開始接觸docker技術、mysql技術,加上本人工作基本都在Linux下進行,因此需要一套Linux環境進行練習。…

軟考-軟件設計師中級備考 12、軟件工程

一、軟件工程概述 定義:軟件工程是一門研究用工程化方法構建和維護有效的、實用的和高質量軟件的學科。它涉及到軟件的開發、測試、維護、管理等多個方面,旨在運用一系列科學方法和技術手段,提高軟件的質量和開發效率,降低軟件開…

【多次彈出“獲取打開此tobiieyetracking鏈接的應用”的窗口】解決辦法

使用聯想R9000P突然出現“獲取打開此tobiieyetracking鏈接的應用”的窗口,每隔幾分鐘就彈一次,特別惡心人,解決辦法: 找到【此電腦】,鼠標右鍵【管理】;選擇【服務】,如下所示,找到…

項目選擇的三個核心因素:市場前景、競爭優勢和成本控制

能保持持續增長和賺錢的項目就是好項目。 每個創業者創業之初,遇到的第一個難題就是選擇做什么項目? 俗話說:方向不對,努力白費。 選錯項目,意味著你所有的付出都是打水漂。 能做的項目那么多,在沒有價值…

裸機 Kubernetes 集群負載均衡器:MetalLB 深度解析與實戰指南

一、引言 在云原生架構中,Kubernetes 默認的負載均衡能力依賴于云廠商(如 AWS ELB、GCP LB),但在裸機或本地數據中心環境中,這一功能缺失導致 LoadBalancer 類型的 Service 始終處于 Pending 狀態。此時,M…

2025年- H20-Lc128-240. 搜索二維矩陣 II(矩陣)---java版

1.題目描述 2.思路 遍歷矩陣,然后如果遇到矩陣中的值正好等于target,輸出true。否則,輸出false。 3.代碼 public class H240 {public boolean searchMatrix(int[][] matrix, int target) {//1.計算出總的行值,總的列值。int mm…

系統架構設計師:設計模式——行為設計模式

一、行為設計模式 行為模式涉及算法和對象間職責的分配。行為模式不僅描述對象或類的模式,還描述它們之間的通信模式。這些模式刻畫了在運行時難以跟蹤的、復雜的控制流。它們將用戶的注意力從控制流轉移到對象間的聯系方式上來。 行為類模式使用繼承機制在類間分…

java springboot實現MCP Server SSE

參考: https://juejin.cn/post/7491881721278529570 SpringAI 實現 SSE MCP Server項目 - Auler - 博客園 springboot-MCPserver-JUnit: 使用springboot支持mcp項目搭建,同時有著便捷的單元測試來進行敏捷開發對話即服務:Spring BootMCP讓…