实时视频稳定化OpenCV

时间:2018-08-22 15:18:49

标签: python opencv video-processing image-stabilization

我已经在OpenCV(cv :: videostab)中搜索了一个函数,该函数可以让我实时进行视频稳定处理。但是据我了解,在OpenCV中这还不可用。因此,TwoPassStabilizer(OnePassStabilizer)一次需要一个完整的视频,而不是两个连续的帧。

Ptr<VideoFileSource> source = makePtr<VideoFileSource>(inputPath); //it's whole video
TwoPassStabilizer *twopassStabilizer = new TwoPassStabilizer();
twoPassStabilizer->setFrameSource(source); 

因此,我必须在没有OpenCV视频稳定类的情况下执行此操作。是真的吗?

2 个答案:

答案 0 :(得分:0)

OpenCV库不提供用于实时视频稳定化的专有代码/模块。

要说的是,如果您使用的是python代码,则可以使用我强大的线程化VidGear视频处理python库,该库现在以最小的延迟提供实时的视频稳定化,而付出的代价几乎没有。 Stabilizer Class的额外计算能力要求。为了方便起见,下面是一个基本用法示例:

# import libraries
from vidgear.gears import VideoGear
from vidgear.gears import WriteGear
import cv2

stream = VideoGear(source=0, stabilize = True).start() # To open any valid video stream(for e.g device at 0 index)

# infinite loop
while True:

    frame = stream.read()
    # read stabilized frames

    # check if frame is None
    if frame is None:
        #if True break the infinite loop
        break

    # do something with stabilized frame here

    cv2.imshow("Stabilized Frame", frame)
    # Show output window

    key = cv2.waitKey(1) & 0xFF
    # check for 'q' key-press
    if key == ord("q"):
        #if 'q' key-pressed break out
        break

cv2.destroyAllWindows()
# close output window

stream.stop()
# safely close video stream

更多高级用法可以在这里找到:https://github.com/abhiTronix/vidgear/wiki/Real-time-Video-Stabilization#real-time-video-stabilization-with-vidgear

答案 1 :(得分:0)

我们通过固定坐标系创建了用于视频稳定的模块。它是开源的。 https://github.com/RnD-Oxagile/EvenVizion