2017-09-13 8 views
0

私は、画像をロードするのにcv2.imread()を使用するので、apiはimg_pathを入力として受け取ります。python opencv - 画像パスインターフェイスにビデオ入力を使用する最も良い方法は何ですか?api

def detect(net, classes, img_path, CONF_THRESH = 0.8, NMS_THRESH = 0.3): 
    outputs = [] 
    im = cv2.imread(img_path) 
    ...... 
    ...... 

今、私は(cap.readながら、直接ビデオをロードして、APIのfunction.Howeverを呼び出すための小さなツールを作成したい)が行われます。イメージオブジェクトをAPI関数に直接渡すことはできません。

def detect_video(net, classes, video, CONF_THRESH = 0.8, NMS_THRESH =0.3): 
    """detect an input video""" 
    try: 
     cap = cv2.VideoCapture('video') 
    except Exception, e: 
     print e 
     return None 
    while(True): 
     ret, frame = cap.read() 
     # try to call the api function 

APIの機能を変更する必要はありません。私の考えは、ビデオキャプチャ画像を書き込んで、再度読み込み直すことです。しかし、これは愚かで遅いようです。

答えて

1

あなたは、機能を検出し、あなたのAPIに引数としてフレームを渡す最初にそれを保存し、まさに私の解決策いつも

img_path = 'image.jpg' 
... 
ret, frame = cap.read() 
cv2.imwrite(img_path, frame) 

# and now try to call the api function 
detect(net, classes, img_path, CONF_THRESH = 0.8, NMS_THRESH = 0.3) 
+0

のthatsとしてAPI関数をコールする場合。私はビデオを保存せずに他の解決策を模索しようとしています。 – pwan

関連する問題