在准备处理视频时,我希望用户能够选择视频中要处理的第一帧和最后一帧。轨迹栏似乎是执行此操作的有用工具,但我可以使用它来读取和显示视频中的特定帧吗?
通常,我会逐帧读取视频,并使用 while 循环对其运行处理算法:
cap = cv2.VideoCapture('myvideo.mp4')
while(cap.isOpened()):
ret, frame = cap.read()
# ....
这不利于用户快速浏览视频以找到合适的帧间隔进行处理。
轨迹栏非常适合设置图像处理参数,但如果您能想到更好的工具,请建议。下面您可以看到一些使用轨迹栏设置阈值级别变量的代码。
def onTrackbarChange(trackbarValue):
pass
cv2.createTrackbar( 'threshold level', 'mywindow', 100, 255, onTrackbarChange )
thresholdlevel = cv2.getTrackbarPos('thresh','mywindow')
有没有办法做这样的事情?
start_frame = cv2.getTrackbarPos('start-frame','mywindow')
ret, frame = cap.read(start_frame) #don't think this is possible
cv2.imshow('window', frame)
理想情况下应该有两块窗板,其中一块带有start_frame
,以及一个与stop_frame
,每个都由一个轨迹栏控制。