2
$\begingroup$

i'm having some troubles in a script that use the auto detect features function from the tracking layout. The above script return the error:

RuntimeError: Operator bpy.ops.clip.detect_features.poll() failed, context is incorrect

Does someone knows how to force a change context to clip tracking?

import bpy
import random

scene = bpy.context.scene

bpy.ops.clip.open(directory="/home/lucasa/Vídeos/", files=[{"name":"100_0921.MP4", "name":"100_0921.MP4"}], relative_path=True)
print('video clip imported')

clip = bpy.data.movieclips[0]
print("\nMovie Clip %s" % clip.name)

bpy.ops.clip.detect_features()
print('\nDetect Features')
$\endgroup$
1
$\begingroup$

I know this is years late but I will answer this incase anyone stumbles across this.

In this case you need to force context since the operators require a certain context to execute. To do this for the detect_features method you can do:

ctx = bpy.context.copy()
for area in bpy.context.screen.areas:
    if area.type == 'CLIP_EDITOR':
        ctx['area'] = area
bpy.ops.clip.detect_features(ctx)
$\endgroup$
  • $\begingroup$ If there is no clip editor open on the screen this wont work. Toggling context.area = 'CLIP_EDITOR', copying context and toggling back, may be a more foolproof way to make a context override. $\endgroup$ – batFINGER Oct 19 '17 at 4:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.