第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 openCV python 播放時移動視頻窗口

如何使用 openCV python 播放時移動視頻窗口

翻翻過去那場雪 2023-06-27 13:37:36
我一直在做一個項目,經過 6 個多小時的谷歌搜索和 openCV 書籍的挖掘后,我有點困惑。import cv2import numpy as npcap = cv2.VideoCapture('tree.avi')count = 0x_pos = 0y_pos = 0a_x = 180a_y = 180frames = 60if (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:         breakcap.release()cv2.destroyAllWindows()這是非常通用的代碼,我將其作為靈感。我想要實現(xiàn)的是將正在播放的視頻窗口移動到屏幕上的另一個位置。我從經驗中知道,簡單地在給定的窗口下添加另一個 moveWindow() 會導致窗口在應用于每一幀時在兩者之間模糊。有沒有一種方法可以使幀 1~100 位于 (100,100),幀 101~200 位于 (200, 200),依此類推?如果是實時的那就最好了,但是非常感謝有關讓用戶在播放視頻時移動窗口的任何幫助。提前致謝。更新 我找到了一種方法來手動設置視頻在某些幀內移動。然而,這似乎只適用于預設值。(ex) 幀 50 ~ 55 有沒有辦法實時使用一些外部輸入?
查看完整描述

1 回答

?
胡說叔叔

TA貢獻1804條經驗 獲得超8個贊

我想要實現(xiàn)的是將正在播放的視頻窗口移動到屏幕上的另一個位置

如果上述陳述是您主要關心的問題,那么請使用FileVideoStream.

VideoCapture 管道將大部分時間花在讀取和解碼下一幀上。當讀取、解碼并返回下一幀時,OpenCV 應用程序被完全阻止。

這意味著當您移動視頻時,應用程序會被阻止,因為管道無法解碼下一幀。

例如:下面是顯示框架,同時手動拖動窗口。

import cv2

import time

from imutils.video import FileVideoStream


vs = FileVideoStream('result.mp4').start()

time.sleep(0.2)


while True:

? ? frame = vs.read()


? ? cv2.imshow("out", frame)

? ? if cv2.waitKey(25) & 0xFF == ord('q'):

? ? ? ? break


vs.stop()

cv2.destroyAllWindows()

現(xiàn)在,如果我們將代碼與一些變量合并:


import cv2

import time

from imutils.video import FileVideoStream


vs = FileVideoStream('result.mp4').start()

time.sleep(0.2)


count = 0

x_pos = 0

y_pos = 0

a_x = 180

a_y = 180

frames = 60



while True:

? ? frame = vs.read()


? ? scale_percent = 200

? ? width = int(frame.shape[1] * scale_percent / 100)

? ? height = int(frame.shape[0] * scale_percent / 100)

? ? dim = (width, height)


? ? if count in range(0, 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)


? ? cv2.imshow("out", frame)

? ? if cv2.waitKey(25) & 0xFF == ord('q'):

? ? ? ? break


vs.stop()

cv2.destroyAllWindows()

您將看到兩個窗口,一個正在顯示,第二個窗口正在從窗口的右側位置移動到左側位置。

http://img1.sycdn.imooc.com/649a75c80001b02401260126.jpg

查看完整回答
反對 回復 2023-06-27
  • 1 回答
  • 0 關注
  • 175 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號