2016-04-04 5 views
1

保存したビデオに長方形を描きたい。四角形を描きながら、ビデオはフリーズする必要があります。私は画像上に長方形を描画するのに成功していますが、opencvとpythonを使って保存されたビデオで同じことをする方法はわかりません。opencvとpythonを使って保存したビデオのマウスクリックイベント

+0

現在のコードを入力する必要があります。コード内のコメントを使用して、問題のある場所を強調表示します。 –

+0

グローバルなchar c = waitKey(10)を宣言します。矩形の描画を開始すると、イベントはLButtonDownになり、char cをwaitKey(0)に設定します。それはビデオを凍結させるかもしれない –

答えて

1

私はopencvを使用してROI選択メカニズムを必要としていましたが、最終的にどのように実装するかを考えました。

実装はここにあります(opencvdragrect)。これはopencv 3.1.0とPython 2.7を使用しています

保存されたビデオは、別のフレームを読み込まずに表示するまで、ビデオは一時停止中と見なされます。

一時停止した動画(フレーム)に追加する方法については、次のコードを参考にしてください。あなたが使用します(opencvdragrect)ライブラリで

import cv2 
import selectinwindow 
wName = "select region" 

video = cv2.VideoCapture(videoPath) 

while(video.isOpened()): 

    # Read frame 
    ret, RGB = video.read() 
    frameCounter += 1 

    if frameCounter == 1 : # you can pause any frame you like 

     rectI = selectinwindow.dragRect 
     selectinwindow.init(rectI, I, wName, I.shape[1], I.shape[0]) 
     cv2.namedWindow(wName) 
     cv2.setMouseCallback(wName, selectinwindow.dragrect, rectI) 

     while True: 

      # display the image 
      cv2.imshow(wName, rectI.image) 
      key = cv2.waitKey(1) & 0xFF 

      # if returnflag is set break 
      # this loop and run the video 
      if rectI.returnflag == True: 
       break 

     box = [rectI.outRect.x,rectI.outRect.y,rectI.outRect.w,rectI.outRect.h] 

    # process the video 
    # ... 
    # ... 

矩形選択プロセスを停止して、ビデオを続行するにはダブルクリックします。

これが役に立ちます。

関連する問題