最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用Python實(shí)現(xiàn)普通視頻變成動(dòng)漫視頻

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

容我廢話一下

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

效果展示

一、思路流程

1.讀取視頻幀

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

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

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

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

為了讓大家不關(guān)心深度學(xué)習(xí)模型,已經(jīng)為大家準(zhǔn)備好了轉(zhuǎn)換后的onnx類型模型。接下來(lái)按順序介紹運(yùn)行onnx模型流程。

安裝onnxruntime庫(kù)

pip install onnxruntime

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

pip install onnxruntime-gpu

需要注意的是:

onnxruntime-gpu的版本跟CUDA有關(guān)聯(lián),具體對(duì)應(yīng)關(guān)系如下:

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

運(yùn)行模型

先導(dǎo)入onnxruntime庫(kù),創(chuàng)建InferenceSession對(duì)象,調(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})

具體到我們這里的動(dòng)漫效果,實(shí)現(xiàn)細(xì)節(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ù)倍。這里主要是因?yàn)榭紤]到深度學(xué)習(xí)模型有下采樣,確保每次下采樣能被2整除。

單幀效果展示

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

這里使用Opencv庫(kù),提取視頻中每一幀并調(diào)用回調(diào)函數(shù)將視頻幀回傳。在將圖片轉(zhuǎn)視頻過(guò)程中,通過(guò)定義VideoWriter類型變量WRITE確保唯一性。具體實(shí)現(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

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

相關(guān)文章

  • python通過(guò)nmap掃描在線設(shè)備并嘗試AAA登錄(實(shí)例代碼)

    python通過(guò)nmap掃描在線設(shè)備并嘗試AAA登錄(實(shí)例代碼)

    這篇文章主要介紹了python通過(guò)nmap掃描在線設(shè)備并嘗試AAA登錄,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Django數(shù)據(jù)結(jié)果集序列化并展示實(shí)現(xiàn)過(guò)程

    Django數(shù)據(jù)結(jié)果集序列化并展示實(shí)現(xiàn)過(guò)程

    這篇文章主要介紹了Django數(shù)據(jù)結(jié)果集序列化并展示實(shí)現(xiàn)過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Python保存圖片的3種情況代碼實(shí)例

    Python保存圖片的3種情況代碼實(shí)例

    這篇文章主要給大家介紹了關(guān)于Python保存圖片的3種情況,在Python中我們可以使用多種方法來(lái)保存圖片,包括使用Python內(nèi)置的庫(kù)和第三方庫(kù),需要的朋友可以參考下
    2023-10-10
  • Python中Parsel的兩種數(shù)據(jù)提取方式詳解

    Python中Parsel的兩種數(shù)據(jù)提取方式詳解

    在網(wǎng)絡(luò)爬蟲的世界中,數(shù)據(jù)提取是至關(guān)重要的一環(huán),Python 提供了許多強(qiáng)大的工具,其中之一就是 parsel 庫(kù),下面我們就來(lái)深入學(xué)習(xí)一下Parsel的兩種數(shù)據(jù)提取方式吧
    2023-12-12
  • 利用Python如何實(shí)時(shí)檢測(cè)自身內(nèi)存占用

    利用Python如何實(shí)時(shí)檢測(cè)自身內(nèi)存占用

    這篇文章主要介紹了利用Python如何實(shí)時(shí)檢測(cè)自身內(nèi)存占用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • 淺談一下Python中閉包的作用

    淺談一下Python中閉包的作用

    這篇文章主要介紹了淺談一下Python中閉包的作用,閉包特點(diǎn)是返回的函數(shù)還引用了外層函數(shù)的局部變量,所以,要正確使用閉包,就要確保引用的局部變量在函數(shù)返回后不能變,需要的朋友可以參考下
    2023-12-12
  • Python?中用多種方式實(shí)現(xiàn)單例模式

    Python?中用多種方式實(shí)現(xiàn)單例模式

    單例模式是一種常用的軟件設(shè)計(jì)模式,該模式的主要目的是確保某一個(gè)類只有一個(gè)實(shí)例存在,本文給大家分享Python?實(shí)現(xiàn)單例模式的五種寫法,感興趣的朋友一起看看吧
    2022-11-11
  • flask操作數(shù)據(jù)庫(kù)插件Flask-SQLAlchemy的使用

    flask操作數(shù)據(jù)庫(kù)插件Flask-SQLAlchemy的使用

    Python?中最廣泛使用的ORM框架是SQLAlchemy,它是一個(gè)很強(qiáng)大的關(guān)系型數(shù)據(jù)庫(kù)框架,本文就來(lái)介紹一下flask操作數(shù)據(jù)庫(kù)插件Flask-SQLAlchemy的使用,感興趣的可以了解一下
    2023-09-09
  • python hmac模塊驗(yàn)證客戶端的合法性

    python hmac模塊驗(yàn)證客戶端的合法性

    這篇文章主要介紹了python hmac模塊驗(yàn)證客戶端的合法性,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-11-11
  • python列表和字符串的三種逆序遍歷操作

    python列表和字符串的三種逆序遍歷操作

    這篇文章主要介紹了python列表和字符串的三種逆序遍歷操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06

最新評(píng)論

织金县| 德兴市| 林芝县| 伽师县| 赤峰市| 潞城市| 自治县| 通化市| 图们市| 博客| 东兰县| 岳阳市| 宜兰市| 天全县| 马公市| 长垣县| 余庆县| 卢龙县| 五原县| 昔阳县| 海城市| 牙克石市| 兴文县| 庆元县| 黄浦区| 武邑县| 台中县| 抚顺县| 三河市| 阿克陶县| 石屏县| 金秀| 佛坪县| 班戈县| 松阳县| 阜城县| 宜君县| 凌云县| 讷河市| 德令哈市| 北流市|