ラベル scikit-image の投稿を表示しています。 すべての投稿を表示
ラベル scikit-image の投稿を表示しています。 すべての投稿を表示

2021年8月14日土曜日

MoviePyのまとめ

MoviePyでPythonから動画の編集・加工がおこなうことができます。

インストール

MoviePyのインストールする方法についての記事です。

buntu 22.04にpipenvとmoviepyをインストールする

Ubuntu 20.04にpipenvとmoviepyをインストールする

Raspberry Pi(Raspbian Buster)/Debian 10(Buster)にpipenvとmoviepyをインストールする

動画情報の取得

解像度や動画の長さを取得することができます。

MoviePyで動画の解像度を取得する

MoviePyで動画のフレーム数・FPS・長さを取得する

動画の速度・時間に関する処理

動画のスピードを変えたり、任意の時間のフレームを画像として保存することができます。

MoviePyで動画の速度を変更する

MoviePyで動画を倍速にして保存する

MoviePyで動画の指定秒数のフレームを画像として保存する

色調や明るさに関する処理

色調や明るさを変更・加工することができます。

MoviePyで動画の明るさ・コントラストを変更する

MoviePyで動画の色を反転する

MoviePyで動画にガンマ補正をかける

MoviePyで動画をグレースケールにして保存する

MoviePyで動画のピクセルの値を変更して明るさを変更する

MoviePyで動画をコントラスト・輪郭を強調した感じに加工する

動画の連結や重ね合わせなどの処理

動画の連結や重ね合わせ等を行うこともできます。

MoviePyで2つ以上の動画を連結する

MoviePyで動画に別の動画を重ねる

MoviePyで動画に題名を追加する

MoviePyで単色のクリップを作成する

変形やカット・回転・タイル配置といった効果

動画画像を変形させたり、切り取ったりといったような加工を行うこともできます。

MoviePyで動画を回転する

MoviePyで動画のサイズを変更する

MoviePyで動画を左右反転・上下反転する

MoviePyで動画に外枠(マージン)を追加する

MoviePyで動画の指定座標の外側を切り落として保存する

MoviePyで元動画とグレースケール動画の市松模様風に加工する

MoviePyで動画を縮小してタイル状に配置する

音声に関する編集

動画の音声も編集・加工することができます。

MoviePyで動画の音声ボリュームを変更する

MoviePyで動画に別の音声を設定する

MoviePyで動画の音声を抽出して保存する

MoviePyで動画の音声を除いて保存する

scikit-imageとの併用での加工

scikit-imageと併用して様々な画像処理を行うこともできます。

MoviePyとscikit-imageで動画画面に半透明の星形を描画する

MoviePyとscikit-imageで2つの動画の片方をぼかした円形に切り取って重ね合わせる

MoviePyとscikit-imageで動画画面をぼかす

MoviePyとscikit-imageで2つの動画の片方を円形に切り取って重ね合わせる

MoviePyとscikit-imageで動画画面に半透明の円を描画する

MoviePyとscikit-imageで動画画面のノイズを除去する

MoviePyとscikit-imageで動画画面にノイズをつける

MoviePyとscikit-imageで動画画面の輪郭抽出をする

MoviePyとscikit-imageで動画画面を二値化する

MoviePyとscikit-imageで動画画面の明度を変更する

MoviePyとscikit-imageで動画画面の彩度を変更する

MoviePyとscikit-imageで動画画面を着色する

MoviePyとscikit-imageで動画を渦巻き状に変形する

関連情報

・様々な動画に関するアプリケーションについては、以下のまとめを参照してください。
動画関連アプリケーションのまとめ

2020年9月5日土曜日

MoviePyとscikit-imageで動画画面に半透明の星形を描画する

MoviePyとscikit-imageで動画画面に半透明の星形を描画するには、polygon関数とCompositeVideoClipを使用します。

サンプルコード

以下のサンプルコードでは、scikit-imageのpolygon関数で星形を描画し、CompositeVideoClipを使用して動画と重ね合わせます。
from moviepy.editor import *
from skimage.draw import *
import numpy as np

clip1 = VideoFileClip("hydrangea.mp4")

img = np.zeros((clip1.h, clip1.w, 4), dtype=np.uint8)
cx = clip1.w/2
cy = clip1.h/2
points = 5
rad = 2*np.pi/points
halfrad = rad/2
outer_radius = clip1.h*0.4
inner_radius = clip1.h*0.2
starx = []
stary = []
for pl in range(points):
    starx.append(cx+np.cos(pl*rad-np.pi/2)*outer_radius)
    starx.append(cx+np.cos(pl*rad+halfrad-np.pi/2)*inner_radius)
    stary.append(cy+np.sin(pl*rad-np.pi/2)*outer_radius)
    stary.append(cy+np.sin(pl*rad+halfrad-np.pi/2)*inner_radius)

rr, cc = polygon(stary, starx)
img[rr, cc] = (255,255,192,128)
clip2 = ImageClip(img).set_duration(clip1.duration)
clip1t = CompositeVideoClip([clip1, clip2])

clip1t.write_videofile("star.mp4")


〇元動画の画面

 

〇出力動画の画面

 

 〇scikit-imageインストール
MoviePyの他、仮想環境のフォルダに移動して以下のコマンドを実行します。

pipenv install scikit-image

関連情報

MoviePyのまとめ

・moviepyのホームページ
https://zulko.github.io/moviepy/

2020年9月4日金曜日

MoviePyとscikit-imageで2つの動画の片方をぼかした円形に切り取って重ね合わせる

MoviePyとscikit-imageで2つの動画の片方をぼかした円形に切り取って重ね合わせるには、円形のマスクを作成してぼかしてから、2つの動画を重ね合わせます。

〇サンプルコード
以下のサンプルコードでは、マスクを作成してdisk関数で円を描画してgaussianフィルターでぼかしてから、CompositeVideoClipを使用して2つの動画を重ね合わせます。
from moviepy.editor import *
from skimage.draw import *
import numpy as np
from skimage.filters import *

def process_gaussian(image, sigma=1):
    return gaussian(image, sigma=sigma)*255

clip1 = VideoFileClip("hydrangea.mp4")
clip2 = VideoFileClip("riceplant.mp4")

img = np.zeros((clip1.h, clip1.w), dtype=np.uint8)
rr, cc = disk((clip1.h/2, clip1.w/2), clip1.h/2)
img[rr, cc] = 1
clip2mask = ImageClip(img, ismask=True)
blurred_mask = clip2mask.fl_image(lambda clip2mask: process_gaussian(clip2mask, sigma=100))

clip3 = CompositeVideoClip([clip1, clip2.set_mask(blurred_mask)])

clip3.write_videofile("blurred_circle_mask.mp4")


〇元動画の画面

 

〇出力動画の画面

 

〇scikit-imageインストール MoviePyの他、仮想環境のフォルダに移動して以下のコマンドを実行します。

pipenv install scikit-image

関連情報

MoviePyのまとめ

・moviepyのホームページ
https://zulko.github.io/moviepy/

2020年9月3日木曜日

MoviePyとscikit-imageで動画画面をぼかす

MoviePyとscikit-imageで動画画面をぼかすには、gaussianフィルターを使用します。

サンプルコード

以下のサンプルコードでは、gaussianフィルターを使用して動画画面をぼかしています。
from moviepy.editor import *
from skimage.filters import *
from skimage.util import *

def process_gaussian(image, sigma=1):
    return gaussian(image, sigma=sigma, multichannel=True)*255

clip1 = VideoFileClip("hydrangea.mp4")

clip1t = clip1.fl_image(lambda clip1: process_gaussian(clip1, sigma=3))
clip1t.write_videofile("moviepy_gaussian.mp4")


〇元動画の画面

 

〇出力動画の画面

 

 〇scikit-imageインストール
MoviePyの他、仮想環境のフォルダに移動して以下のコマンドを実行します。

pipenv install scikit-image

関連情報

MoviePyのまとめ

・moviepyのホームページ
https://zulko.github.io/moviepy/

2020年9月2日水曜日

MoviePyとscikit-imageで2つの動画の片方を円形に切り取って重ね合わせる

MoviePyとscikit-imageで2つの動画の片方を円形に切り取って重ね合わせるには、円形のマスクを作成して2つの動画を重ね合わせます。

サンプルコード

以下のサンプルコードでは、マスクを作成してdisk関数で円を描画し、CompositeVideoClipを使用して2つの動画を重ね合わせます。
from moviepy.editor import *
from skimage.draw import *
import numpy as np

clip1 = VideoFileClip("hydrangea.mp4")
clip2 = VideoFileClip("riceplant.mp4")

img = np.zeros((clip1.h, clip1.w), dtype=np.uint8)
rr, cc = disk((clip1.h/2, clip1.w/2), clip1.h/2)
img[rr, cc] = 1
clip2mask = ImageClip(img, ismask=True)
clip3 = CompositeVideoClip([clip1, clip2.set_mask(clip2mask)])

clip3.write_videofile("circle_mask.mp4")


〇元動画の画面

 

〇出力動画の画面


〇scikit-imageインストール
MoviePyの他、仮想環境のフォルダに移動して以下のコマンドを実行します。

pipenv install scikit-image

関連情報

MoviePyのまとめ

・moviepyのホームページ
https://zulko.github.io/moviepy/

2020年9月1日火曜日

MoviePyとscikit-imageで動画画面に半透明の円を描画する

MoviePyとscikit-imageで動画画面に半透明の円を描画するには、disk関数とCompositeVideoClipを使用します。

サンプルコード

以下のサンプルコードでは、scikit-imageのdisk関数で円を描画し、CompositeVideoClipを使用して動画と重ね合わせます。
from moviepy.editor import *
from skimage.draw import *
import numpy as np

clip1 = VideoFileClip("hydrangea.mp4")

img = np.zeros((clip1.h, clip1.w, 4), dtype=np.uint8)
rr, cc = disk((clip1.h/2, clip1.w/2), clip1.h/2)
img[rr, cc] = (255,255,255,128)
clip2 = ImageClip(img).set_duration(clip1.duration)
clip1t = CompositeVideoClip([clip1, clip2])

clip1t.write_videofile("circle.mp4")


〇元動画の画面

 

〇出力動画の画面

 

 〇scikit-imageインストール
MoviePyの他、仮想環境のフォルダに移動して以下のコマンドを実行します。

pipenv install scikit-image

関連情報

MoviePyのまとめ

・moviepyのホームページ
https://zulko.github.io/moviepy/

2020年8月31日月曜日

MoviePyとscikit-imageで動画画面のノイズを除去する

MoviePyとscikit-imageで動画画面のノイズを除去するには、fl_imageメソッドとdenoise_bilateral関数などを使用します。

サンプルコード

以下のサンプルコードでは、scikit-imageのdenoise_bilateral関数を使用してノイズを除去し、動画を出力しています。
from moviepy.editor import *
from skimage.util import *
from skimage.restoration import *

def process_denoise_bilateral(image):
    dw = denoise_bilateral(img_as_float(image), sigma_color=0.05, sigma_spatial=5, multichannel=True)
    return img_as_ubyte(dw)

clip1 = VideoFileClip("hydrangea.mp4")

clip1t = clip1.fl_image(lambda clip1: process_denoise_bilateral(clip1))
clip1t.write_videofile("denoise_bilateral.mp4")


〇元動画の画面

 

〇出力動画の画面

 

〇scikit-imageインストール
MoviePyの他、仮想環境のフォルダに移動して以下のコマンドを実行します。

pipenv install scikit-image

関連情報

MoviePyのまとめ

・moviepyのホームページ
https://zulko.github.io/moviepy/

2020年8月30日日曜日

MoviePyとscikit-imageで動画画面にノイズをつける

MoviePyとscikit-imageで動画画面にノイズをつけるには、fl_imageメソッドとrandom_noise関数を使用します。

サンプルコード

以下のサンプルコードでは、scikit-imageのsobel/roberts輪郭抽出し、動画を出力しています。
from moviepy.editor import *
from skimage.util import *
import numpy as np

def process_random_noise(image, *, mode='gaussian', seed=None, clip=True, **kwargs):
    rn = random_noise(img_as_float(image), mode, seed, clip, **kwargs)
    return img_as_ubyte(rn)

clip1 = VideoFileClip("hydrangea.mp4")

clip1t = clip1.fl_image(lambda clip1: process_random_noise(clip1, var=0.03))
clip1t.write_videofile("random_noise_gaussian.mp4")

clip1t = clip1.fl_image(lambda clip1: process_random_noise(clip1, mode='pepper', amount=0.3))
clip1t.write_videofile("random_noise_pepper.mp4")

〇元動画の画面

〇出力動画の画面(gaussian)

〇出力動画の画面(pepper)

〇scikit-imageインストール
MoviePyの他、仮想環境のフォルダに移動して以下のコマンドを実行します。
pipenv install scikit-image

関連情報

MoviePyのまとめ

・moviepyのホームページ
https://zulko.github.io/moviepy/

2020年8月29日土曜日

MoviePyとscikit-imageで動画画面の輪郭抽出をする

MoviePyとscikit-imageで動画画面の輪郭抽出をするには、fl_imageメソッドとsobel/robertsなどのフィルターを使用します。

サンプルコード

以下のサンプルコードでは、scikit-imageのsobel/roberts輪郭抽出し、動画を出力しています。
from moviepy.editor import *
from skimage.filters import sobel
from skimage.filters import roberts
from skimage.color import *

def process_sobel(image):
    gray = rgb2gray(image.astype(float))
    return gray2rgb(sobel(gray))

def process_roberts(image):
    gray = rgb2gray(image.astype(float))
    return gray2rgb(roberts(gray))

clip1 = VideoFileClip("hydrangea.mp4")

clip1t = clip1.fl_image(process_sobel)
clip1t.write_videofile("sobel.mp4")

clip1t = clip1.fl_image(process_roberts)
clip1t.write_videofile("roberts.mp4")

〇元動画の画面

〇出力動画の画面(sobel)

〇出力動画の画面(roberts)

〇scikit-imageインストール
MoviePyの他、仮想環境のフォルダに移動して以下のコマンドを実行します。
pipenv install scikit-image

関連情報

MoviePyのまとめ

・moviepyのホームページ
https://zulko.github.io/moviepy/

2020年8月28日金曜日

MoviePyとscikit-imageで動画画面を二値化する

MoviePyとscikit-imageで動画画面を二値化するには、fl_imageメソッドとthreshold_otsuやthrehold_isodataなどのフィルターを使用します。

サンプルコード

以下のサンプルコードでは、scikit-imageのthreshold_otsu/threshold_isodataでしきい値を求め、それぞれのアルゴリズムで2値化のRGB版と白黒版の動画を出力しています。
from moviepy.editor import *
from skimage.filters import *
from skimage.color import *

def process_threshold_otsu(image):
    threshold = threshold_otsu(image)
    return (image > threshold)*255

def process_threshold_otsu_gray(image):
    gray = rgb2gray(image)
    threshold = threshold_otsu(gray)
    return gray2rgb((gray > threshold)*255)

def process_threshold_iso(image):
    threshold = threshold_isodata(image)
    return (image > threshold)*255

def process_threshold_iso_gray(image):
    gray = rgb2gray(image)
    threshold = threshold_isodata(gray)
    return gray2rgb((gray > threshold)*255)

clip1 = VideoFileClip("hydrangea.mp4")

clip1t = clip1.fl_image(process_threshold_otsu)
clip1t.write_videofile("process_threshold_otsu.mp4")

clip1t = clip1.fl_image(process_threshold_otsu_gray)
clip1t.write_videofile("process_threshold_otsu_gray.mp4")

clip1t = clip1.fl_image(process_threshold_iso)
clip1t.write_videofile("process_threshold_iso.mp4")

clip1t = clip1.fl_image(process_threshold_iso_gray)
clip1t.write_videofile("process_threshold_iso_gray.mp4")

〇元動画の画面

〇出力動画の画面(threshold_otsu)

〇出力動画の画面(rgb2grayとthreshold_otsu)

〇出力動画の画面(threshold_isodata)

〇出力動画の画面(rgb2grayとthreshold_isodata)

〇scikit-imageインストール
MoviePyの他、仮想環境のフォルダに移動して以下のコマンドを実行します。
pipenv install scikit-image

関連情報

MoviePyのまとめ

・moviepyのホームページ
https://zulko.github.io/moviepy/

2020年8月27日木曜日

MoviePyとscikit-imageで動画画面の明度を変更する

MoviePyとscikit-imageで動画画面の明度を変更するには、fl_imageメソッドとrgb2hsv関数、hsv2rgb関数を使用します。

〇サンプルコード
以下のサンプルコードでは、scikit-imageのrgb2hsv関数でHSVに変換し、彩度を指定の値に設定後RGBに戻しています。
from moviepy.editor import *
from skimage.color import *

def process_brightness(image, brightness):
    hsv = rgb2hsv(image.astype(float))
    hsv[:, :, 2] = brightness
    return hsv2rgb(hsv)

clip1 = VideoFileClip("hydrangea.mp4")

clip1t = clip1.fl_image(lambda clip1: process_brightness(clip1, 255))

clip1t.write_videofile("brightness.mp4")

〇元動画の画面

〇出力動画の画面

〇scikit-imageインストール
MoviePyの他、仮想環境のフォルダに移動して以下のコマンドを実行します。
pipenv install scikit-image

関連情報

MoviePyのまとめ

・moviepyのホームページ
https://zulko.github.io/moviepy/

2020年8月26日水曜日

MoviePyとscikit-imageで動画画面の彩度を変更する

MoviePyとscikit-imageで動画画面の彩度を変更するには、fl_imageメソッドとrgb2hsv関数、hsv2rgb関数を使用します。

〇サンプルコード
以下のサンプルコードでは、scikit-imageのrgb2hsv関数でHSVに変換し、彩度を指定の値に設定後RGBに戻しています。
from moviepy.editor import *
from skimage.color import *

def process_saturation(image, saturation):
    hsv = rgb2hsv(image.astype(float))
    hsv[:, :, 1] = saturation
    return hsv2rgb(hsv)

clip1 = VideoFileClip("hydrangea.mp4")

clip1t = clip1.fl_image(lambda clip1: process_saturation(clip1, 0.3))

clip1t.write_videofile("saturation.mp4")

〇元動画の画面

〇出力動画の画面

〇scikit-imageインストール
MoviePyの他、仮想環境のフォルダに移動して以下のコマンドを実行します。
pipenv install scikit-image

関連情報

MoviePyのまとめ

・moviepyのホームページ
https://zulko.github.io/moviepy/

2020年8月25日火曜日

MoviePyとscikit-imageで動画画面を着色する

MoviePyとscikit-imageで動画画面を着色するには、fl_imageメソッドとrgb2hsv関数、hsv2rgb関数を使用します。

サンプルコード

以下のサンプルコードでは、scikit-imageのrgb2hsv関数でHSVに変換し、色相・彩度を指定の値に設定後RGBに戻しています。
from moviepy.editor import *
from skimage.color import *

def process_colorize(image, hue, saturation):
    hsv = rgb2hsv(image.astype(float))
    hsv[:, :, 0] = hue
    hsv[:, :, 1] = saturation
    return hsv2rgb(hsv)

clip1 = VideoFileClip("hydrangea.mp4")

clip1t = clip1.fl_image(lambda clip1: process_colorize(clip1, 0.6, 0.8))

clip1t.write_videofile("colorize.mp4")

〇元動画の画面

〇出力動画の画面

scikit-imageインストール

MoviePyの他、仮想環境のフォルダに移動して以下のコマンドを実行します。
pipenv install scikit-image

関連情報

MoviePyのまとめ

・moviepyのホームページ
https://zulko.github.io/moviepy/