2016-03-20 54 views
3

私は、新しいGoPro Hero 4カメラからライブストリームをキャプチャしようとする際に問題があり、openCVを使用して画像処理を行っています。ここで Pythonを使用してGoPro Hero 4カメラのライブストリームをopenCVに接続するにはどうすればよいですか?

は私の試験である(何も常につかん

import cv2 
import argparse 
import time 
import datetime 
from goprohero import GoProHero 


ap = argparse.ArgumentParser() 
ap.add_argument("-a", "--min-area", type=int, default=500, help="minimum area size") 
args = vars(ap.parse_args()) 

camera = cv2.VideoCapture("http://10.5.5.9:8080/gp/gpControl/executep1=gpStream&c1=restart") 
time.sleep(5) 

cv2.namedWindow("", cv2.CV_WINDOW_AUTOSIZE) 

firstFrame = None 
noOfCars = 0 
speed = 80 

while True: 
    (grabbed, frame) = camera.read() 
    text = "Smooth" 
    print("Capturing ...") 

    if not grabbed: 
     print("nothing grabbed") 
     break 

ループブレークとして作成されたウィンドウの上に現れていないがOpenCVのは、何も得ないことを意味している偽等しい。

+0

これで解決しましたか? –

+0

いいえ、私はカメラを変更しました –

+1

@AhmedSamyはどのカメラに? – jessica

答えて

0

リテラルを選択していないためですストリームをキャプチャするビデオキャプチャオブジェクトからのIPには、.jpgまたは.mpeg(これを使用することをお勧めします)のように、最後に拡張子が含まれている必要があります。ビデオストリーム(ピクチャの代わりに.mpegなど)を使用する場合は、cv.grabとcv.retrieveを実行する必要があります。これはすべてのIPカメラに適用されます。 希望これは私はOpenCVのに良い流れを得ることができた不思議人のために:)

1

を助けた:

まずあなたがピップを持っている場合、のGoProのPython APIをダウンロードする必要があります:

pip install goprocam 

ない場合は

git clone https://github.com/konradit/gopro-py-api 
cd gopro-py-api 
python setup.py install 

そして、Pythonのターミナルウィンドウに次のコードを実行します。

from goprocam import GoProCamera 
from goprocam import constants 
gopro = GoProCamera.GoPro() 
gopro.stream("udp://127.0.0.1:10000") 

これは、UDPストリームをローカルホストに再ストリームします.FFmpegが必要です。

次に、ローカルホストのストリームを開くためのOpenCVを使用することができます。

import cv2 
import numpy as np 
from goprocam import GoProCamera 
from goprocam import constants 
cascPath="/usr/share/opencv/haarcascades/haarcascade_frontalface_default.xml" 
faceCascade = cv2.CascadeClassifier(cascPath) 
gpCam = GoProCamera.GoPro() 
cap = cv2.VideoCapture("udp://127.0.0.1:10000") 
while True: 
    ret, frame = cap.read() 
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 
    faces = faceCascade.detectMultiScale(
     gray, 
     scaleFactor=1.1, 
     minNeighbors=5, 
     minSize=(30, 30), 
     flags=cv2.CASCADE_SCALE_IMAGE 
    ) 
    for (x, y, w, h) in faces: 
     cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2) 
    cv2.imshow("GoPro OpenCV", frame) 
    if cv2.waitKey(1) & 0xFF == ord('q'): 
     break 
cap.release() 
cv2.destroyAllWindows() 

hereさらに例を参照してください - 私はffmpegの> localhostを、その非常にラグので、この方法をお勧めしませんが、あなたも、純粋なOpenCV to open the streamを使用することができます> opencvはopencvと比較して非常に安定しています。

+0

このリンクは質問に答えるかもしれませんが、答えの本質的な部分をここに含めて参考にしてください。リンクされたページが変更された場合、リンクのみの回答は無効になります。 - [レビューの投稿](レビュー/低品質の投稿/ 16180494) – chtz

+1

リンクに必須のコードといくつかの例を追加しました。 – konraditurbe

関連する問題