如何使用 Python 将我的 GoPro Hero 4 相机直播连接到 openCV?

2024-05-09

我在尝试从我的新 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

循环中断,因为抓取始终等于 false,这意味着 openCV 什么也没有得到。


对于那些想知道我能够在 OpenCV 上获得良好流媒体的人:

首先,如果您有 pip,则需要下载 GoPro Python API:

pip install goprocam

if not

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 打开 localhost 流:

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 https://github.com/KonradIT/gopro-py-api/tree/master/examples/opencv_gopro- 你甚至可以使用纯OpenCV 打开流 https://github.com/KonradIT/gopro-py-api/blob/master/examples/opencv_gopro/ffmpegless-preview.py虽然我不推荐它,因为这种方式非常滞后,但 ffmpeg > localhost > opencv 与仅与 opencv 相比非常稳定。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Python 将我的 GoPro Hero 4 相机直播连接到 openCV? 的相关文章

随机推荐