ساخت ویدئو با استفاده از تصاویر در پایتون — راهنمای کاربردی
«اُپنسیوی» (OpenCV) یک کتابخانه بسیار پر کاربرد برای «پردازش تصویر» (Picture Processing) است. این کتابخانه، گستره وسیعی از قابلیتها برای انجام پردازش تصویر را فراهم میکند. در ادامه، چگونگی ساخت یک ویدئو با استفاده از چندین تصویر در «زبان برنامهنویسی پایتون» (Python Programming Language) و با استفاده از کتابخانه OpenCV آموزش داده شده است. ابتدا باید کتابخانههای PIL و cv2 را نصب کرد. همچنین، باید مسیر را پیش از اجرای کد بررسی کرد، در غیر این صورت، ضمن انجام کار، کاربر با خطاهای بسیار زیادی مواجه میشود.
روش کار
با استفاده از کتابخانه PIL، تصاویر باز میشوند و سایز آنها به mean_height و mean_width تغییر داده میشود، زیرا ویدئو با کتابخانه cv2 ساخته خواهد شد که نیاز به تصاویر ورودی با ارتفاع و عرض مشابه دارد. تصاویر تغییر سایز داده شده در آرایه قرار داده میشوند و قاب ویدئو روی mean_height و mean_width تنظیم میشود. سپس، با استفاده از حلقه زدن، هر تصویر به آن قاب الحاق میشود. در زیر، پیادهسازی این روش ارائه شده است.
# importing libraries
import os
import cv2
from PIL import Image
# Checking the current directory path
print(os.getcwd())
# Folder which contains all the images
# from which video is to be generated
os.chdir("C:\\Python\\Geekfolder2")
path = "C:\\Python\\Geekfolder2"
mean_height = 0
mean_width = 0
num_of_images = len(os.listdir('.'))
# print(num_of_images)
for file in os.listdir('.'):
im = Image.open(os.path.join(path, file))
width, height = im.size
mean_width += width
mean_height += height
# im.show() # uncomment this for displaying the image
# Finding the mean height and width of all images.
# This is required because the video frame needs
# to be set with same width and height. Otherwise
# images not equal to that width height will not get
# embedded into the video
mean_width = int(mean_width / num_of_images)
mean_height = int(mean_height / num_of_images)
# print(mean_height)
# print(mean_width)
# Resizing of the images to give
# them same width and height
for file in os.listdir('.'):
if file.endswith(".jpg") or file.endswith(".jpeg") or file.endswith("png"):
# opening image using PIL Image
im = Image.open(os.path.join(path, file))
# im.size includes the height and width of image
width, height = im.size
print(width, height)
# resizing
imResize = im.resize((mean_width, mean_height), Image.ANTIALIAS)
imResize.save( file, 'JPEG', quality = 95) # setting quality
# printing each resized image name
print(im.filename.split('\\')[-1], " is resized")
# Video Generating function
def generate_video():
image_folder = '.' # make sure to use your folder
video_name = 'mygeneratedvideo.avi'
os.chdir("C:\\Python\\Geekfolder2")
images = [img for img in os.listdir(image_folder)
if img.endswith(".jpg") or
img.endswith(".jpeg") or
img.endswith("png")]
# Array images should only consider
# the image files ignoring others if any
print(images)
frame = cv2.imread(os.path.join(image_folder, images[0]))
# setting the frame width, height width
# the width, height of first image
height, width, layers = frame.shape
video = cv2.VideoWriter(video_name, 0, 1, (width, height))
# Appending the images to the video one by one
for image in images:
video.write(cv2.imread(os.path.join(image_folder, image)))
# Deallocating memories taken for window creation
cv2.destroyAllWindows()
video.release() # releasing the video generated
# Calling the generate_video function
generate_video()
تصاویر ورودی استفاده شده به همراه خروجی، از این مسیر قابل دانلود هستند. به افرادی که تمایل به استفاده از جلوههای بصری بیشتر و صدا همراه با ویدئو دارند، استفاده از ffmpeg python library توصیه میشود که این نوع کارکردها را امکانپذیر میسازد. برای دانلود تصاویر ورودی و ویدئوهای خروجی، اینجا [+] را کلیک کنید.
اگر نوشته بالا برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای دادهکاوی و یادگیری ماشین
- آموزش اصول و روشهای دادهکاوی (Data Mining)
- مجموعه آموزشهای هوش مصنوعی
- تشخیص اشیا در پایتون — راهنمای کاربردی
- پردازش تصویر در متلب — راهنمای جامع
- پیاده سازی مدل دسته بندی تصاویر در پایتون — راهنمای کاربردی
مجموعه: برنامه نویسی برچسب ها: Open CV, OpenCV, Picture Processing, Python Programming Language, اپن سی وی, برنامه نویسی پایتون, پایتون, پردازش تصویر