mirror of https://github.com/opencv/opencv.git
Open Source Computer Vision Library
https://opencv.org/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.6 KiB
50 lines
1.6 KiB
import os |
|
import cv2 as cv |
|
import numpy as np |
|
|
|
|
|
class Timelapser: |
|
|
|
TIMELAPSE_CHOICES = ('no', 'as_is', 'crop',) |
|
DEFAULT_TIMELAPSE = 'no' |
|
|
|
def __init__(self, timelapse=DEFAULT_TIMELAPSE): |
|
self.do_timelapse = True |
|
self.timelapse_type = None |
|
self.timelapser = None |
|
|
|
if timelapse == "as_is": |
|
self.timelapse_type = cv.detail.Timelapser_AS_IS |
|
elif timelapse == "crop": |
|
self.timelapse_type = cv.detail.Timelapser_CROP |
|
else: |
|
self.do_timelapse = False |
|
|
|
if self.do_timelapse: |
|
self.timelapser = cv.detail.Timelapser_createDefault( |
|
self.timelapse_type |
|
) |
|
|
|
def initialize(self, *args): |
|
"""https://docs.opencv.org/4.x/dd/dac/classcv_1_1detail_1_1Timelapser.html#aaf0f7c4128009f02473332a0c41f6345""" # noqa |
|
self.timelapser.initialize(*args) |
|
|
|
def process_and_save_frame(self, img_name, img, corner): |
|
self.process_frame(img, corner) |
|
cv.imwrite(self.get_fixed_filename(img_name), self.get_frame()) |
|
|
|
def process_frame(self, img, corner): |
|
mask = np.ones((img.shape[0], img.shape[1]), np.uint8) |
|
img = img.astype(np.int16) |
|
self.timelapser.process(img, mask, corner) |
|
|
|
def get_frame(self): |
|
frame = self.timelapser.getDst() |
|
frame = np.float32(cv.UMat.get(frame)) |
|
frame = cv.convertScaleAbs(frame) |
|
return frame |
|
|
|
@staticmethod |
|
def get_fixed_filename(img_name): |
|
dirname, filename = os.path.split(img_name) |
|
return os.path.join(dirname, "fixed_" + filename)
|
|
|