2016-03-20 12 views
3

Yeni GoPro Hero 4 kameramdan canlı bir akış yakalamaya çalışırken sıkıntı yaşıyorum ve openCV kullanarak bazı görüntü işleme gerçekleştiriyorum. İşte GoPro Hero 4 kameramı canlı akışını Python kullanarak openCV'ye nasıl bağlarım?

benim deneme (hiçbir şey her zaman yakaladı

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 

döngü kırılır olarak oluşturulan penceresinde gösterir OpenCV şey yok demektir sahte eşittir.

+0

Bunu çözdünüz mü? –

+0

Hayır, kamerayı –

+1

@AhmedSamy olarak değiştirdim? – jessica

cevap

0

Eğer bir hazır seçmemektesiniz Bunun nedeni video çekimi için video akışı nesnesinin ip ucunda bir uzantı bulunmalıdır (ister .jpg veya .mpeg olsun (bunu kullanmayı tercih ederim), ya da birkaç tane dokümantasyonda listelenir. video akışı (örneğin bir resim yerine .mpeg gibi), cv.grab sonra cv.retrieve yapmanız gerekir. Bu, tüm ip kameraları için geçerli olur.Eğer pip varsa

Önce, GoPro Python API indirmeniz gerekir:Umut bu ben OpenCV iyi bir akış elde edebildi merak edenler için :)

1

yardımcı

pip install goprocam 

: değil

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

Sonra piton terminal penceresinde aşağıdaki kodu çalıştırın

eğer

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

Bu, UDP akışını yerel ana kaynağa yeniden akıtacak, yolda FFmpeg gerekiyor! - ffmpeg> localhost, onun çok laggy bu şekilde çünkü ben bunu önermiyoruz, ancak hatta saf OpenCV to open the stream kullanabilirsiniz

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

başka örnekler here bakınız:

Sonra localhost Akışı açmak için OpenCV kullanabilirsiniz > opencv sadece opencv ile karşılaştırıldığında çok kararlıdır.

+0

Bu bağlantı soruyu yanıtlayabilirken, cevabın temel kısımlarını buraya dahil etmek ve referans için bağlantı sağlamak daha iyidir. Bağlantılı sayfa değiştiğinde yalnızca bağlantı yanıtları geçersiz olabilir. - [Yorum Yaz] (/ review/düşük kaliteli yazılar/16180494) – chtz

+1

Temel kodu ve bağlantıya bazı örnekleri ekledim. – konraditurbe

İlgili konular