import cv2
# 2枚の画像を読み込む
image = []
image.append(cv2.imread('source1.jpg'))
image.append(cv2.imread('source2.jpg'))
# 長辺が800ピクセルになるようにリサイズ
for i in range(len(image)):
height, width = image[i].shape[:2]
if height > width:
image[i] = cv2.resize(image[i], (int(width * 800 / height), 800))
else:
image[i] = cv2.resize(image[i], (800, int(height * 800 / width)))
cv2.imwrite('1_' + str(i + 1) + '.jpg', image[i])
実行結果
import cv2
image = cv2.imread("1_1.jpg")
# 画像のサイズを取得
height, width = image.shape[:2]
# フレームレート
fps = 30
# image writerを用意する
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter('2.mp4', fourcc, fps, (width, height))
# Hueを0~179ずらしながらフレームを書き込む
for i in range(180):
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
hsv[:, :, 0] = (hsv[:, :, 0] + i) % 180
bgr = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)
out.write(bgr)
out.release()
実行例
import cv2
import numpy as np
image = cv2.imread("1_1.jpg")
# 画像のサイズを取得
height, width = image.shape[:2]
# フレームレート
fps = 60
# image writerを用意する
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter('3.mp4', fourcc, fps, (width, height))
# Saturationを-255~255ずらしながらフレームを書き込む
for i in range(-255, 256):
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
# float32型に変換
hsv = hsv.astype(np.float32)
hsv[:, :, 1] = np.clip(hsv[:, :, 1] + i, 0, 255)
# uint8型に戻す
hsv = hsv.astype(np.uint8)
bgr = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)
out.write(bgr)
out.release()
実行例
import cv2
import numpy as np
image = cv2.imread("1_1.jpg")
# 画像のサイズを取得
height, width = image.shape[:2]
# フレームレート
fps = 60
# image writerを用意する
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter('4.mp4', fourcc, fps, (width, height))
# Valueを-255~255ずらしながらフレームを書き込む
for i in range(-255, 256):
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
# float32型に変換
hsv = hsv.astype(np.float32)
hsv[:, :, 2] = np.clip(hsv[:, :, 2] + i, 0, 255)
# uint8型に戻す
hsv = hsv.astype(np.uint8)
bgr = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)
out.write(bgr)
out.release()
実行例
import cv2
import numpy as np
# 2枚の画像を読み込む
image = []
image.append(cv2.imread('1_1.jpg'))
image.append(cv2.imread('1_2.jpg'))
# 画像のサイズを取得
height, width = image[0].shape[:2]
# フレームレート
fps = 30
# image writerを用意する
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter('5.mp4', fourcc, fps, (width, height))
# 総フレーム数270で、アルファ値を0~1になるように変えながらimage[0]とimage[1]を合成した画像を書き込む
for i in range(270):
alpha = i / 270
beta = 1 - alpha
dst = cv2.addWeighted(image[0], alpha, image[1], beta, 0)
out.write(dst)
out.release()
実行例