Python 如何在MoviePy中向fl_图像添加参数?

Python 如何在MoviePy中向fl_图像添加参数?,python,moviepy,Python,Moviepy,据我所知,fl_image接受一个管道函数,该函数应该只接受一个图像,即。 processedClip=输入文件.fl\u图像(imagePipeline) 在哪里 def图像管道(img): 返回最终授权 但是如果我们的imagePipeline函数接受更多参数呢 i、 e def图像管道(img、arg1、arg2、arg3): 返回最终授权 如何在fl_image中向imagePipeline添加参数?虽然这可能不是最佳解决方案,但您可以将任何参数设置为全局变量 例如: 我也遇到了同样

据我所知,fl_image接受一个管道函数,该函数应该只接受一个图像,即。 processedClip=输入文件.fl\u图像(imagePipeline)

在哪里

def图像管道(img):

返回最终授权

但是如果我们的imagePipeline函数接受更多参数呢

i、 e

def图像管道(img、arg1、arg2、arg3):

返回最终授权


如何在fl_image中向imagePipeline添加参数?

虽然这可能不是最佳解决方案,但您可以将任何参数设置为全局变量

例如:


我也遇到了同样的问题,并和同学们一起解决了

类处理图像:
定义初始化(self,arg1,arg2):
self.arg1=arg1
self.arg2=arg2
定义呼叫(自我,图像):
#任何你想要的过程
返回图像
clip=VideoFileClip('input.mp4')
final_clip=clip.fl_图像(ProcessImage(1,2))
最终剪辑。写入视频文件('output.mp4')

您可以使用
lambda
技巧:

from moviepy.editor import VideoFileClip

def change_image(image, param):
    return image + param

myparam = 1
modified_clip = (
   VideoFileClip('/path/to/my/initial/clip')
   .fl_image(lambda image: change_image(image, myparam))
)
您可以使用闭包(比类少一些样板):

functools.partial也会这样做。例如:

import functools
import cv2

blur5 = functools.partial(cv2.GaussianBlur,ksize=(5,5),sigmaX=0)
def mkproc(*args,*kw):
    def fun(img):
        #this code has access to args and kw
        return img
    return fun

final = clip.fl_image(mkproc("foo","bar",spam="eggs"))
import functools
import cv2

blur5 = functools.partial(cv2.GaussianBlur,ksize=(5,5),sigmaX=0)