No Python / OpenCV, existe uma maneira de rolar rapidamente os quadros de um vídeo, permitindo que o usuário selecione os quadros inicial e final a serem processados?

Ao me preparar para processar um vídeo, desejo que o usuário possa selecionar o primeiro e o último quadro a serem processados no vídeo. A trackbar parece ser uma ferramenta útil para fazer isso, mas posso usá-la para ler e exibir quadros específicos de um vídeo?

Normalmente, leio um vídeo quadro a quadro e executo meu algoritmo de processamento nele, usando um loop while:

cap = cv2.VideoCapture('myvideo.mp4')
while(cap.isOpened()):
    ret, frame = cap.read()
    # ....

Isso não é propício para que o usuário verifique rapidamente o vídeo para encontrar um bom intervalo de quadros a ser processado.

A trackbar é ótima para definir parâmetros de processamento de imagem, mas se houver uma ferramenta melhor em que você possa pensar nisso, sugira. Abaixo, você pode ver algum código para definir uma variável de nível de limite usando uma barra de trilhas.

def onTrackbarChange(trackbarValue):
    pass

cv2.createTrackbar( 'threshold level', 'mywindow', 100, 255, onTrackbarChange )

thresholdlevel = cv2.getTrackbarPos('thresh','mywindow')

Existe uma maneira de fazer algo assim?

start_frame = cv2.getTrackbarPos('start-frame','mywindow')
ret, frame = cap.read(start_frame) #don't think this is possible
cv2.imshow('window', frame)

Idealmente, haveria dois painéis de janela, um com ostart_framee um com ostop_frame, cada um controlado por uma barra de trilhas.

questionAnswers(1)

yourAnswerToTheQuestion