我一直在做一个项目,经过 6 个多小时的谷歌搜索和 openCV 书籍的挖掘后,我有点困惑。
import cv2
import numpy as np
cap = cv2.VideoCapture('tree.avi')
count = 0
x_pos = 0
y_pos = 0
a_x = 180
a_y = 180
frames = 60
if (cap.isOpened()== False):
print("Error opening video stream or file")
while(cap.isOpened()):
ret, frame = cap.read()
if ret == True:
resized = frame
scale_percent = 200
width = int(frame.shape[1] * scale_percent / 100)
height = int(frame.shape[0] * scale_percent / 100)
dim = (width, height)
if count < 50 or count >= 55:
cv2.moveWindow('Frame', x_pos, y_pos)
cv2.imshow('Frame', frame)
if count in range(50, 55):
resized = cv2.resize(frame, dim, interpolation = cv2.INTER_AREA)
cv2.imshow('Frame',resized)
x_pos = x_pos + int((a_x / frames) * (count - 50))
y_pos = y_pos + int((a_y / frames) * (count - 50))
cv2.moveWindow('Frame', x_pos, y_pos)
count = count + 1
if cv2.waitKey(25) & 0xFF == ord('q'):
break
else:
break
cap.release()
cv2.destroyAllWindows()
这是非常通用的代码,我将其作为灵感。我想要实现的是将正在播放的视频窗口移动到屏幕上的另一个位置。我从经验中知道,简单地在给定的窗口下添加另一个 moveWindow() 会导致窗口在应用于每一帧时在两者之间模糊。
有没有一种方法可以使帧 1~100 位于 (100,100),帧 101~200 位于 (200, 200),依此类推?如果是实时的那就最好了,但是非常感谢有关让用户在播放视频时移动窗口的任何帮助。
提前致谢。
更新 我找到了一种方法来手动设置视频在某些帧内移动。然而,这似乎只适用于预设值。(ex) 帧 50 ~ 55 有没有办法实时使用一些外部输入?
胡说叔叔
相关分类