我有ffmpeg命令,可以使图像叠加其他和缩放,但缩放效果不能正常工作,它只能在叠加图像帧内工作。
import cv2
cap = cv2.VideoCapture(0)
#help(cv2)
while cap.isOpened():
#BGR image feed from camera
ret, img = cap.read()
cv2.imshow('output', img)
#BGR to grayscale
img2 = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow('grayscale', img2)
#BGR to binary(RED) thershholded
imgthreshhold = cv2.inRange(img, (3,3,125), (40,40,255))
cv2.imshow('threshholded', imgthreshhold)
k = cv2.waitKey(10)
if k==27:
break
cap.release()
cv2.destroyAllWindows()
任何人都可以帮我吗?
答案 0 :(得分:0)
叠加过滤器不支持动态调整大小,因此您需要进行黑客攻击:
ffmpeg -i pic001.jpg -i pic002.jpg -filter_complex
"[0:v]scale=-1:720,format=yuva422p,pad=1.5*iw:1.5*ih:(ow-iw)/2:(oh-ih)/2:color=black@0,
zoompan=z='min(zoom+0.0015,1.5)':x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)':d=125:s=WxH,
trim=duration=5[scaled_video];
[1:v]scale=1920:1080,boxblur=15[blur_image];
[blur_image][scaled_video]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2[outv]"
-c:v libx264 -aspect 1280/720 -map [outv] -t 10 -y fixed.mp4
诀窍是添加一个alpha通道,然后用透明的黑色填充图像。当重叠时,由于alpha,黑色填充消失。
在zoompan中,你必须用宽度和宽度手动替换W和H.填充图像的高度。在这种情况下,初始缩放后图像的宽度为1.5 x,高度为1.5 x。我选择1.5作为乘数,因为它是zoompan中的最大缩放级别。