python圖片生成視頻代碼的簡單介紹

本文目錄一覽:

python OpenCV視頻拆分圖片代碼

# coding:utf-8

import cv2

import numpy as np

import os

print(“1”)

vc = cv2.VideoCapture(“123.mp4”)

C = 1

print(“2”)

if vc.isOpened():

rVal, frame = vc.read()

else:

print(“3”)

rVal = False

while rVal:

print(C)

if C % 1000 == 0: # every 5 fps write frame to img

path=’./image/’+str(C)+’.jpg’

cv2.imwrite(path, frame)

# cropped001 = frame2[0:300,300:600] #y change from 0 to 300 x change from 300 to 600

# cv2.im write(‘./cropped/’+str(c)+’001.jpg’,cropped001)

print(C)

cv2.waitKey(1)

C = C + 1

vc.release()

如何用python實現視頻關鍵幀提取並保存為圖片

import cv2

vc = cv2.VideoCapture(‘Test.avi’) #讀入視頻文件

c=1

if vc.isOpened(): #判斷是否正常打開

rval , frame = vc.read()

else:

rval = False

timeF = 1000 #視頻幀計數間隔頻率

while rval: #循環讀取視頻幀

rval, frame = vc.read()

if(c%timeF == 0): #每隔timeF幀進行存儲操作

cv2.imwrite(‘image/’+str(c) + ‘.jpg’,frame) #存儲為圖像

c = c + 1

cv2.waitKey(1)

vc.release()

如何用編程生成視頻文件

恕我愚鈍,兄弟,「不藉助控制項,只提供若干圖片資源」,通過寫代碼編程序做一個avi格式的視頻,這不是電影膠片的放映原理嗎?這樣的程序蓋茨尚且難以做出,並且也沒有作出。有點異想天開了吧。

使用OpenCV和Python進行圖像拼接

么是圖像拼接呢?簡單來說,對於輸入應該有一組圖像,輸出是合成圖像。同時,必須保留圖像之間的邏輯流。

首先讓我們了解圖像拼接的概念。基本上,如果你想捕捉一個大的場景,你的相機只能提供一個特定解析度的圖像(如:640×480),這當然不足以捕捉大的全景。所以,我們可以做的是捕捉整個場景的多個圖像,然後把所有的碎片放在一起,形成一個大的圖像。這些有序的照片被稱為全景。獲取多幅圖像並將其轉換成全景圖的整個過程稱為圖像拼接。

首先,需要安裝opencv 3.4.2.16。

接下來我們將導入我們將在Python代碼中使用的庫:

在我們的教程中,我們將拍攝這張精美的照片,我們會將其分成兩張左右兩張照片,然後我們會嘗試拍攝相同或非常相似的照片。

因此,我將此圖像切成兩個圖像,它們會有某種重疊區域:

在此,我們將列出我們應採取的步驟,以取得最終的結果:

因此,從第一步開始,我們將導入這兩個圖像並將它們轉換為灰度,如果您使用的是大圖像,我建議您使用cv2.resize,因為如果您使用較舊的計算機,它可能會非常慢並且需要很長時間。如果要調整圖像大小,即調整50%,只需將fx = 1更改為fx = 0.5即可。

我們還需要找出兩幅圖像中匹配的特徵。我們將使用opencv_contrib的SIFT描述符。SIFT (Scale constant Feature Transform)是一種非常強大的OpenCV演算法。這些最匹配的特徵作為拼接的基礎。我們提取兩幅圖像的關鍵點和sift描述符如下:

kp1和kp2是關鍵點,des1和des2是圖像的描述符。如果我們用特徵來畫這幅圖,它會是這樣的:

左邊的圖像顯示實際圖像。右側的圖像使用SIFT檢測到的特徵進行注釋:

一旦你有了兩個圖像的描述符和關鍵點,我們就會發現它們之間的對應關係。我們為什麼要這麼做?為了將任意兩個圖像連接成一個更大的圖像,我們必須找到重疊的點。這些重疊的點會讓我們根據第一幅圖像了解第二幅圖像的方向。根據這些公共點,我們就能知道第二幅圖像是大是小還是旋轉後重疊,或者縮小/放大後再fitted。所有此類信息的產生是通過建立對應關係來實現的。這個過程稱為registration。

對於匹配圖像,可以使用opencv提供的FLANN或BFMatcher方法。我會寫兩個例子證明我們會得到相同的結果。兩個示例都匹配兩張照片中更相似的特徵。當我們設置參數k = 2時,這樣我們就要求knnMatcher為每個描述符給出2個最佳匹配。「matches」是列表的列表,其中每個子列表由「k」個對象組成。以下是Python代碼:

FLANN匹配代碼:

BFMatcher匹配代碼:

通常在圖像中,圖像的許多地方可能存在許多特徵。所以我們過濾掉所有的匹配來得到最好的。因此我們使用上面得到的前2個匹配項進行比值檢驗。如果下面定義的比值大於指定的比值,則考慮匹配。

現在我們定義在圖像上繪製線條的參數,並給出輸出以查看當我們在圖像上找到所有匹配時的樣子:

這是輸出的匹配圖像:

這部分完整Python代碼:

因此,一旦我們獲得了圖像之間的最佳匹配,我們的下一步就是計算單應矩陣。如前所述,單應矩陣將與最佳匹配點一起使用,以估計兩個圖像內的相對方向變換。

在OpenCV中估計單應性是一項簡單的任務,只需一行代碼:

在開始編碼拼接演算法之前,我們需要交換圖像輸入。所以img_現在會取右圖像img會取左圖像。

那麼讓我們進入拼接編碼:

因此,首先,我們將最小匹配條件count設置為10(由MIN_MATCH_COUNT定義),並且只有在匹配良好的匹配超出所需匹配時才進行拼接。否則,只需顯示一條消息,說明匹配不夠。

因此,在if語句中,我們將關鍵點(從匹配列表)轉換為findHomography()函數的參數。

只需在這段代碼中討論cv2.imshow(「original_image_overlapping.jpg」,img2),我們就會顯示我們收到的圖像重疊區域:

因此,一旦我們建立了單應性,我們需要扭曲視角,我們將以下單應矩陣應用於圖像:

所以我們使用如下:

在上面兩行Python代碼中,我們從兩個給定的圖像中獲取重疊區域。然後在「dst」中我們只接收到沒有重疊的圖像的右側,因此在第二行代碼中我們將左側圖像放置到最終圖像。所以在這一點上我們完全拼接了圖像:

剩下的就是去除圖像的黑色,所以我們將編寫以下代碼來從所有圖像邊框中刪除黑邊:

這是我們調用修剪邊界的最終定義函數,同時我們在屏幕上顯示該圖像。如果您願意,也可以將其寫入磁碟:

使用上面的Python代碼,我們將首先收到原始圖片:

這是完整的最終代碼:

在本教程中,我們學習了如何使用OpenCV執行圖像拼接和全景構造,並編寫了最終的圖像拼接代碼。

我們的圖像拼接演算法需要四個主要步驟:檢測關鍵點和提取局部不變描述符; 獲得圖像之間的匹配描述符; 應用RANSAC估計單應矩陣; 使用單應矩陣應用warping transformation。

當僅為兩個圖像構建全景圖時,該演算法在實踐中工作良好。

爆肝!用Python製作抖音爆款視頻!

前幾天我在抖音上刷到一個慢慢變老的視頻,播放量居然有 30W+,當時就在想這視頻 Python 可不可以做?經過一番搜索,我找到了騰訊雲的人臉年齡變化 API,上面介紹說只要用戶上傳一張人臉圖片,基於人臉編輯與生成演算法,就可以輸出一張人臉變老或變年輕的圖片,並支持實現人臉不同年齡的變化。

第一步,在註冊賬號之後,打開 API 密鑰管理頁面( )獲取到 SecretId 和 SecretKey。

第二步,安裝騰訊雲的 SDK

在人臉年齡變化 API 中有一個 AgeInfo 參數,它包含了 Age 和 FaceRect 兩個屬性,其中 FaceRect 屬性必須填人臉在照片中基於左上角的 X、Y 坐標和人臉的高度與寬度。所以先要調用人臉檢測與分析 API 得到這些數據。

下面的示例圖是在百度圖片中截取的。

示例結果

在上面已經得到了各個人臉的 X、Y、Width、Height 屬性,加上變老的年齡 Age,就可以請求年齡變化 API 了。

這裡需要注意的是 models 模塊,人臉檢測 models 模塊是在 tencentcloud.iai.v20200303 包下,人臉年齡變化的 models 是在 tencentcloud.ft.v20200304 下,兩個 models 模塊並不兼容。

示例結果

最後的視頻可以將圖片一張一張插入 PPT 幻燈片,點擊保存為視頻。

用 Python 製作抖音素材,下一個 30W+ 播放量等著你。

Python如何上傳本地視頻?

參考代碼如下:

from tkinter import *

from tkinter.ttk import *

from tkinter.filedialog import askopenfile

import time

ws = Tk()

ws.title(‘PythonGuides’)

ws.geometry(‘400×200’)

def open_file():

file_path = askopenfile(mode=’r’, filetypes=[(‘Vedio Files’, ‘*mp4’)])

if file_path is not None:

pass

def uploadFiles():

pb1 = Progressbar(

ws,

orient=HORIZONTAL,

length=300,

mode=’determinate’

)

pb1.grid(row=4, columnspan=3, pady=20)

for i in range(5):

ws.update_idletasks()

pb1[‘value’] += 20

time.sleep(1)

pb1.destroy()

Label(ws, text=’File Uploaded Successfully!’, foreground=’green’).grid(row=4, columnspan=3, pady=10)

adhar = Label(

ws,

text=’Upload Government id in jpg format ‘

)

adhar.grid(row=0, column=0, padx=10)

adharbtn = Button(

ws,

text =’Choose File’,

command = lambda:open_file()

)

adharbtn.grid(row=0, column=1)

dl = Label(

ws,

text=’Upload Driving License in jpg format ‘

)

dl.grid(row=1, column=0, padx=10)

dlbtn = Button(

ws,

text =’Choose File ‘,

command = lambda:open_file()

)

dlbtn.grid(row=1, column=1)

ms = Label(

ws,

text=’Upload Marksheet in jpg format ‘

)

ms.grid(row=2, column=0, padx=10)

msbtn = Button(

ws,

text =’Choose File’,

command = lambda:open_file()

)

msbtn.grid(row=2, column=1)

upld = Button(

ws,

text=’Upload Files’,

command=uploadFiles

)

upld.grid(row=3, columnspan=3, pady=10)

ws.mainloop()

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/227652.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-09 16:31
下一篇 2024-12-09 16:31

相關推薦

  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python字元串寬度不限制怎麼打代碼

    本文將為大家詳細介紹Python字元串寬度不限制時如何打代碼的幾個方面。 一、保持代碼風格的統一 在Python字元串寬度不限制的情況下,我們可以寫出很長很長的一行代碼。但是,為了…

    編程 2025-04-29
  • Python基礎代碼用法介紹

    本文將從多個方面對Python基礎代碼進行解析和詳細闡述,力求讓讀者深刻理解Python基礎代碼。通過本文的學習,相信大家對Python的學習和應用會更加輕鬆和高效。 一、變數和數…

    編程 2025-04-29
  • 用Python繪製酷炫圖片

    在本篇文章中,我們將展示如何使用Python繪製酷炫的圖片。 一、安裝Python繪圖庫 在使用Python繪製圖片之前,我們需要先安裝Python繪圖庫。Python有很多繪圖庫…

    編程 2025-04-29
  • Python簡單數學計算

    本文將從多個方面介紹Python的簡單數學計算,包括基礎運算符、函數、庫以及實際應用場景。 一、基礎運算符 Python提供了基礎的算術運算符,包括加(+)、減(-)、乘(*)、除…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • 倉庫管理系統代碼設計Python

    這篇文章將詳細探討如何設計一個基於Python的倉庫管理系統。 一、基本需求 在著手設計之前,我們首先需要確定倉庫管理系統的基本需求。 我們可以將需求分為以下幾個方面: 1、庫存管…

    編程 2025-04-29
  • 寫代碼新手教程

    本文將從語言選擇、學習方法、編碼規範以及常見問題解答等多個方面,為編程新手提供實用、簡明的教程。 一、語言選擇 作為編程新手,選擇一門編程語言是很關鍵的一步。以下是幾個有代表性的編…

    編程 2025-04-29
  • Python實現簡易心形代碼

    在這個文章中,我們將會介紹如何用Python語言編寫一個非常簡單的代碼來生成一個心形圖案。我們將會從安裝Python開始介紹,逐步深入了解如何實現這一任務。 一、安裝Python …

    編程 2025-04-29
  • 怎麼寫不影響Python運行的長段代碼

    在Python編程的過程中,我們不可避免地需要編寫一些長段代碼,包括函數、類、複雜的控制語句等等。在編寫這些代碼時,我們需要考慮代碼可讀性、易用性以及對Python運行性能的影響。…

    編程 2025-04-29

發表回復

登錄後才能評論