亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

利用Python實現(xiàn)普通視頻變成動漫視頻

 更新時間:2022年08月16日 14:43:24   作者:輕松學Python  
這篇文章主要為大家詳細介紹了如何利用Python語言實現(xiàn)普通視頻變成動漫視頻效果,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下

容我廢話一下

最近幾個月,毒教材被曝光引發(fā)爭議,那些編寫度教材的人著實可惡。咱程序員也沒有手繪插畫能力,但咱可以借助強大的深度學習模型將視頻轉(zhuǎn)動漫。所以今天的目標是讓任何具有python語言基本能力的程序員,實現(xiàn)短視頻轉(zhuǎn)動漫效果。

效果展示

一、思路流程

1.讀取視頻幀

2.將每一幀圖像轉(zhuǎn)為動漫幀

3.將轉(zhuǎn)換后的動漫幀轉(zhuǎn)為視頻

難點在于如何將圖像轉(zhuǎn)為動漫效果。這里我們使用基于深度學習的動漫效果轉(zhuǎn)換模型,考慮到許多讀者對這塊不了解,因此我這邊準備好了源碼和模型,直接調(diào)用即可。

二、圖像轉(zhuǎn)動漫

為了讓大家不關心深度學習模型,已經(jīng)為大家準備好了轉(zhuǎn)換后的onnx類型模型。接下來按順序介紹運行onnx模型流程。

安裝onnxruntime庫

pip install onnxruntime

如果想要用GPU加速,可以安裝GPU版本的onnxruntime:

pip install onnxruntime-gpu

需要注意的是:

onnxruntime-gpu的版本跟CUDA有關聯(lián),具體對應關系如下:

當然,如果用CPU運行,那就不需要考慮那么多了??紤]到通用性,本文全部以CPU版本onnxruntime。

運行模型

先導入onnxruntime庫,創(chuàng)建InferenceSession對象,調(diào)用run函數(shù)。

如下所示

import onnxruntime as rt 
sess = rt.InferenceSession(MODEL_PATH)
inp_name = sess.get_inputs()[0].name
out = sess.run(None, {inp_name: inp_image})

具體到我們這里的動漫效果,實現(xiàn)細節(jié)如下:

import cv2
import numpy as np
import onnxruntime as rt 

# MODEL = "models/anime_1.onnx"
MODEL = "models/anime_2.onnx"

sess = rt.InferenceSession(MODEL)
inp_name = sess.get_inputs()[0].name


def infer(rgb):
    rgb = np.expand_dims(rgb, 0)
    rgb = rgb *  2.0 / 255.0 - 1 
    rgb =  rgb.astype(np.float32) 
    out = sess.run(None, {inp_name: rgb})
    out = out[0][0]
    out = (out+1)/2*255
    out = np.clip(out, 0, 255).astype(np.uint8)
    return out

def preprocess(rgb):
    pad_w = 0
    pad_h = 0
    h,w,__ = rgb.shape
    N = 2**3
    if h%N!=0:
        pad_h=(h//N+1)*N-h
    if w%2!=0:
        pad_w=(w//N+1)*N-w
    # print(pad_w, pad_h, w, h)
    rgb = np.pad(rgb, ((0,pad_h),(0, pad_w),(0,0)), "reflect")
    return rgb, pad_w, pad_h

其中, preprocess函數(shù)確保輸入圖像的寬高是8的整數(shù)倍。這里主要是因為考慮到深度學習模型有下采樣,確保每次下采樣能被2整除。

單幀效果展示

三、視頻幀讀取與視頻幀寫入

這里使用Opencv庫,提取視頻中每一幀并調(diào)用回調(diào)函數(shù)將視頻幀回傳。在將圖片轉(zhuǎn)視頻過程中,通過定義VideoWriter類型變量WRITE確保唯一性。具體實現(xiàn)代碼如下:

import cv2
from tqdm import tqdm

WRITER = None
def write_frame(frame, out_path, fps=30):
    global WRITER
    if WRITER is None:
        size = frame.shape[0:2][::-1]
        WRITER = cv2.VideoWriter(
            out_path,
            cv2.VideoWriter_fourcc(*'mp4v'),  # 編碼器
            fps,
            size)
    WRITER.write(frame)

def extract_frames(video_path, callback):
    video = cv2.VideoCapture(video_path)
    num_frames = int(video.get(cv2.CAP_PROP_FRAME_COUNT))
    for _ in tqdm(range(num_frames)):
        _, frame = video.read()
        if frame is not None:
            callback(frame)
        else:
            break

到此這篇關于利用Python實現(xiàn)普通視頻變成動漫視頻的文章就介紹到這了,更多相關Python動漫視頻內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • pywinauto自動化測試使用經(jīng)驗

    pywinauto自動化測試使用經(jīng)驗

    本文主要介紹了pywinauto自動化測試使用經(jīng)驗,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • 10分鐘用python搭建一個超好用的CMDB系統(tǒng)

    10分鐘用python搭建一個超好用的CMDB系統(tǒng)

    這篇文章主要介紹了10分鐘用python搭建一個超好用的CMDB系統(tǒng),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07
  • Python Unittest根據(jù)不同測試環(huán)境跳過用例的方法

    Python Unittest根據(jù)不同測試環(huán)境跳過用例的方法

    這篇文章主要給大家介紹了關于Python Unittest如何根據(jù)不同測試環(huán)境跳過用例的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起看看吧
    2018-12-12
  • Python設計模式優(yōu)雅構建代碼全面教程示例

    Python設計模式優(yōu)雅構建代碼全面教程示例

    Python作為一門多范式的編程語言,提供了豐富的設計模式應用場景,在本文中,我們將詳細介紹 Python 中的各種設計模式,包括創(chuàng)建型、結構型和行為型模式
    2023-11-11
  • Python+Pygame實現(xiàn)之走四棋兒游戲的實現(xiàn)

    Python+Pygame實現(xiàn)之走四棋兒游戲的實現(xiàn)

    大家以前應該都聽說過一個游戲:叫做走四棋兒。直接在家里的水泥地上用燒完的炭火灰畫出幾條線,擺上幾顆石頭子即可。當時的火爆程度可謂是達到了一個新的高度。本文將利用Pygame實現(xiàn)這一游戲,需要的可以參考一下
    2022-07-07
  • Python中魔術方法的定義及一些常用方法

    Python中魔術方法的定義及一些常用方法

    所有以雙下劃線__包起來的方法,統(tǒng)稱為Magic Method(魔術方法),它是一種的特殊方法,這篇文章主要給大家介紹了關于Python中魔術方法的定義及一些常用方法,需要的朋友可以參考下
    2024-02-02
  • python3列表刪除大量重復元素remove()方法的問題詳解

    python3列表刪除大量重復元素remove()方法的問題詳解

    這篇文章主要給大家介紹了關于python3列表刪除大量重復元素remove()方法的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • OpenCV停車場車位實時檢測項目實踐

    OpenCV停車場車位實時檢測項目實踐

    本文主要介紹了OpenCV停車場車位實時檢測項目實踐,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-04-04
  • python實現(xiàn)一個簡單的并查集的示例代碼

    python實現(xiàn)一個簡單的并查集的示例代碼

    本篇文章主要介紹了python實現(xiàn)一個簡單的并查集的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • 如何使用 Python 中的功能和庫創(chuàng)建 n-gram的過程

    如何使用 Python 中的功能和庫創(chuàng)建 n-gram的過程

    在計算語言學中,n-gram 對于語言處理、上下文和語義分析非常重要,本文將討論如何使用 Python 中的功能和庫創(chuàng)建 n-gram,感興趣的朋友一起看看吧
    2023-09-09

最新評論