我在尝试从我的新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什么也得不到。
这是因为您没有选择要从中捕获视频的文字流。来自videocapture对象的ip必须在末尾包含一个扩展名,无论是.jpg还是.mpeg(我更喜欢使用这个),或者文档中列出的其他一些扩展名。如果使用文本视频流(例如.mpeg而不是图片),则应先执行cv.grab,然后执行cv.retrieve。这适用于所有ip摄像头。 希望这有帮助:)
对于那些想知道我能在OpenCV上获得好消息的人:
首先,如果有pip,您需要下载GoPro Python API:
如果没有
然后在python终端窗口中运行以下代码:
这将把UDP流重新传输到本地主机,路径上需要FFmpeg!
然后可以使用OpenCV打开本地主机流:
请参阅更多示例here-您甚至可以使用纯的OpenCV to open the stream尽管我不推荐这样做,因为这样做非常滞后,ffmpeg>;localhost>;opencv与opencv相比非常稳定。
相关问题 更多 >
编程相关推荐