Rendering large amount of short videos with different generated "animation"? I have a very specific and probably strange question to which I couldn't find any answers.

I'm a computer vision researcher and I need some data for a "small" side project, I want to know if it's possible to create this data with blender (or any other software for that matter).

The data I need consists of many ( >> 1000) short videos (3-5 sec) simulating a licence plate moving through the frame, with tracking and zoom on the license plate.
It's easier to understand with a simple example - I need something very similar to the right window in this video between 0:16-0:20. The difference between  videos is in different paths/angles in which the licence plate will move through the frame.

Edit: forgot to mention the important part, the different videos should have different number plates.

If anyone from this great community understood my strange request and can give some insights it could help me immensely.

Furthermore, if anyone is up for collaboration, I could explain my motivations, goals, and possible payoff in more details.
Ramdomizable setup

Basic components/


Plate parented to "car", car is driven along a curve using follow
path constraint.
Camera has a track to constraint, tracking its view axis -Z to the Plate




Zooming in.

Here I've chosen a frame change handler. The handler takes the scene as an argument. Our camera is scene.camera, our target object is the target of the track to constraint.

The camera is put into field of view mode, and the angle is calculated by the handler. Simple equation using the diagonal length of the plate (target) and the distance from camera to target.

Copy , paste and run script below to set up the handler.

import bpy
from math import atan

def zoom_cam(scene):
    cam_obj = scene.camera
    con = cam_obj.constraints.get("Track To")
    obj = con.target
    #w = max(obj.dimensions)
    w = obj.dimensions.length # diagonal on plane.
    mw = obj.matrix_world
    cam = cam_obj.data
    l = mw.translation - cam_obj.matrix_world.translation
    cam.angle = 2 * atan(w / l.length)

# remove the previous for testing
bpy.app.handlers.frame_change_pre.clear()

bpy.app.handlers.frame_change_pre.append(zoom_cam)


Producing this result.



Mixing it up.  

Every time the handler comes to frame one could randomly set any or all of


the camera object location
the curve transform (loc, rot, scale) as well as shape keys
swap curve objects with others in scene
the plate object texture image (for different plates)  Find link re this
randomize the zooming in handler
put some noise on constraint influence