Чтобы сделать видео более динамичным (а не просто набором неподвижных изображений, идущих одно за другим), я добавил к каждому изображению эффект масштабирования. По сути, я для каждого кадра вычисляю, какой масштаб мне нужно применить, а затем слегка изменяю размер кадра, используя приведенный ниже код.
Код: Выделить всё
# Extract the zoomed part of the image using floating-point coordinates
zoomed_image = cv2.resize(current_image[int(y1):int(y2), int(x1):int(x2)], (res_w, res_h), interpolation=cv2.INTER_LINEAR)
Это отлично работает, когда я Я применяю, скажем, 5%-ное увеличение к изображению, которое отображается в течение очень короткого периода времени. В этом случае, даже если я преобразую целые числа x и y, они в конечном итоге будут разными для каждого кадра (при 30 кадрах в секунду), а размер следующего кадра будет немного отличаться от предыдущего. Масштабирование в конечном итоге происходит плавно.
Но когда эффект масштабирования применяется к изображению в течение более длительного времени, целочисленное преобразование создает несколько кадров с одинаковым x или y или обоими x и y. координаты одинаковы для 3-5 кадров. Это делает эффект масштабирования прерывистым.
Есть ли лучший способ изменить размер изображения для целей масштабирования, где я могу использовать значения с плавающей запятой координат x и y, которые я вычислил, вместо преобразования их в int?
Или есть лучший способ применить эффект масштабирования к каждому кадру другим способом?
Подробнее здесь: https://stackoverflow.com/questions/790 ... and-python
Мобильная версия