openCVpythonを使用して再生中にビデオウィンドウを移動する方法

Jファン

私はプロジェクトに取り組んでおり、openCVの本を6時間以上グーグルで掘り下げた後、ちょっと困惑しました。

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()を追加するだけで、各フレームに適用されるときにウィンドウが2つの間でファジーになることがわかっています。

たとえば、フレーム1〜100が(100,100)にあり、フレーム101〜200が(200、200)にあるようにする方法はありますか?リアルタイムであることが最善ですが、ビデオの再生中にユーザーがウィンドウを移動できるようにすることに関するヘルプは非常に高く評価されています。

前もって感謝します。

更新特定のフレームで移動するようにビデオを手動で設定する方法を見つけました。ただし、これはプリセット値に対してのみ機能するようです。(例)フレーム50〜55外部入力をリアルタイムで使用する方法はありますか?

Ahx

私が達成したいのは、再生中にビデオウィンドウを画面上の別の場所に移動することです

上記のステートメントが主な関心事である場合は、を使用してください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()

ここで、コードをいくつかの変数とマージすると、次のようになります。

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()

2つのウィンドウが表示されます。1つは表示されており、2番目のウィンドウはウィンドウの右側の場所から左側の場所に移動しています。

ここに画像の説明を入力してください

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

再生中にビデオの「ウィンドウ」を分割する

分類Dev

URLSessionを使用してビデオをダウンロードし、appceleratorTitaniumで保存して再生する方法は?

分類Dev

移動中にウィンドウを透明にする方法

分類Dev

別のウィンドウを開いたり、ボタンを使用せずにビデオを再生する

分類Dev

キーボードを使用して別のウィンドウでビデオの動作を制御する

分類Dev

pysparkでgroupbyを使用して、インデックス列、2ウィンドウ移動平均列、および2ウィンドウ差分列を作成する方法

分類Dev

Firefoxアドオンを使用してFirefoxウィンドウを前面に移動します

分類Dev

コマンドラインを使用してウィンドウを特定の画面に移動する

分類Dev

コマンドラインを使用してウィンドウを特定の画面に移動する

分類Dev

移動平均を使用して値のウィンドウ全体を計算する

分類Dev

新しいビデオを再生するときにバックグラウンドで再生されている他のビデオを停止します

分類Dev

ビデオを再生して字幕を自動的にロードする方法

分類Dev

キーボードを使用してUbuntuの別のモニターにウィンドウを移動する

分類Dev

キーボードを使用してUbuntuの別のモニターにウィンドウを移動する

分類Dev

ウィンドウを移動しながら透明にする方法

分類Dev

QtでカスタムtitleBarを使用してウィンドウを移動する方法

分類Dev

HTML5のオーディオ:他のサウンドの後にサウンドを再生する方法は?

分類Dev

自動再生ビデオを実行してサウンドをミュートするにはどうすればよいですか?

分類Dev

TensorFlowを使用して、dict_feedを使用せずに移動する時系列データウィンドウでグラフを最適化する

分類Dev

Rdata.table。groupbyと条件を使用して移動ウィンドウに関数を適用する

分類Dev

ArchのXFCE-WindowsのようにWinkey + Arrowを使用してウィンドウを移動する

分類Dev

Pythonopencv2を使用して1つのウィンドウに複数のビデオフレームを表示する方法

分類Dev

IntelliJ IDEA:キーボードを使用して、デバッグツールウィンドウのタブ間を移動するにはどのように?

分類Dev

Cを使用して任意のタイプのオーディオ/サウンドファイルを再生するにはどうすればよいですか?

分類Dev

JQuery を使用してオーディオ サウンドを 1 回だけ再生するにはどうすればよいですか?

分類Dev

Windows10でpowershell / .netを使用してデスクトップ間でウィンドウを移動する方法

分類Dev

マウスの動きの方向にビデオを再生する

分類Dev

背景をドラッグしてウィンドウを移動する(movableByWindowBackground)

分類Dev

aspページでjavascriptを使用してブラウザウィンドウを移動する

Related 関連記事

  1. 1

    再生中にビデオの「ウィンドウ」を分割する

  2. 2

    URLSessionを使用してビデオをダウンロードし、appceleratorTitaniumで保存して再生する方法は?

  3. 3

    移動中にウィンドウを透明にする方法

  4. 4

    別のウィンドウを開いたり、ボタンを使用せずにビデオを再生する

  5. 5

    キーボードを使用して別のウィンドウでビデオの動作を制御する

  6. 6

    pysparkでgroupbyを使用して、インデックス列、2ウィンドウ移動平均列、および2ウィンドウ差分列を作成する方法

  7. 7

    Firefoxアドオンを使用してFirefoxウィンドウを前面に移動します

  8. 8

    コマンドラインを使用してウィンドウを特定の画面に移動する

  9. 9

    コマンドラインを使用してウィンドウを特定の画面に移動する

  10. 10

    移動平均を使用して値のウィンドウ全体を計算する

  11. 11

    新しいビデオを再生するときにバックグラウンドで再生されている他のビデオを停止します

  12. 12

    ビデオを再生して字幕を自動的にロードする方法

  13. 13

    キーボードを使用してUbuntuの別のモニターにウィンドウを移動する

  14. 14

    キーボードを使用してUbuntuの別のモニターにウィンドウを移動する

  15. 15

    ウィンドウを移動しながら透明にする方法

  16. 16

    QtでカスタムtitleBarを使用してウィンドウを移動する方法

  17. 17

    HTML5のオーディオ:他のサウンドの後にサウンドを再生する方法は?

  18. 18

    自動再生ビデオを実行してサウンドをミュートするにはどうすればよいですか?

  19. 19

    TensorFlowを使用して、dict_feedを使用せずに移動する時系列データウィンドウでグラフを最適化する

  20. 20

    Rdata.table。groupbyと条件を使用して移動ウィンドウに関数を適用する

  21. 21

    ArchのXFCE-WindowsのようにWinkey + Arrowを使用してウィンドウを移動する

  22. 22

    Pythonopencv2を使用して1つのウィンドウに複数のビデオフレームを表示する方法

  23. 23

    IntelliJ IDEA:キーボードを使用して、デバッグツールウィンドウのタブ間を移動するにはどのように?

  24. 24

    Cを使用して任意のタイプのオーディオ/サウンドファイルを再生するにはどうすればよいですか?

  25. 25

    JQuery を使用してオーディオ サウンドを 1 回だけ再生するにはどうすればよいですか?

  26. 26

    Windows10でpowershell / .netを使用してデスクトップ間でウィンドウを移動する方法

  27. 27

    マウスの動きの方向にビデオを再生する

  28. 28

    背景をドラッグしてウィンドウを移動する(movableByWindowBackground)

  29. 29

    aspページでjavascriptを使用してブラウザウィンドウを移動する

ホットタグ

アーカイブ