标签: gopro

有没有办法使用ffmpeg删除GoPro鱼眼

由于镜头校正滤镜,使用ffmpeg可以补偿鱼眼失真:

ffmpeg -i in.mp4 -vf "lenscorrection=cx=0.5:cy=0.5:k1=-.25:k2=-.25" out.mp4
Run Code Online (Sandbox Code Playgroud)

什么值k1k2,尤其是对于一个GOPRO?有没有办法计算它们?

video ffmpeg fisheye gopro

15
推荐指数
3
解决办法
6301
查看次数

用opencv传输m3u8文件

我试图使用以下代码在python中使用cv2从GoPro捕获实时流:

VIDEO_URL = "http://10.5.5.9:8080/live/amba.m3u8"
cam = cv2.VideoCapture(VIDEO_URL)
cv2.namedWindow("GoPro",cv2.CV_WINDOW_AUTOSIZE)
while True:
    f, im = cam.read()
    cv2.imshow("GoPro",im)
    if cv2.waitKey(5) == 27:
        break
cam.release()
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)

但收到以下错误:

WARNING: Couldn't read movie file http://10.5.5.9:8080/live/amba.m3u8
OpenCV Error: Assertion failed (size.width>0 && size.height>0) in imshow, file     /tmp/opencv-MRl1/opencv-2.4.7.1/modules/highgui/src/window.cpp, line 261
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "gopro_simple.py", line 167, in live_stream
    cv2.imshow("GoPro",im)
cv2.error: /tmp/opencv-MRl1/opencv-2.4.7.1/modules/highgui/src/window.cpp:261: error: (-215) size.width>0 && size.height>0 in function imshow
Run Code Online (Sandbox Code Playgroud)

流在vlc中工作,代码与网络摄像头一起工作,所以看起来问题是opencv不喜欢.m3u8格式.如何解决这个问题的任何想法/建议将不胜感激.谢谢.

python opencv gopro

9
推荐指数
1
解决办法
6393
查看次数

GoPro:获取每个帧时间戳

我目前正在尝试从使用GoPro录制的MPEG-4文件中提取每个帧时间戳.

我想要相机捕获帧的确切时间,以便稍后将其与计算机视觉算法结合起来.

我知道输出帧速率是25 fps.我使用ffmpeg和ffprobe以不同的方式提取了pts,但它们都显示出太完美的结果让我相信它们.

每个帧/包具有精确的0.04秒内部(或3600英寸单位),足够方便地匹配完美的25 fps.

我到目前为止使用的命令是:

ffmpeg -i 3_96025.MP4  -an -vf showinfo %10d.png 2> res.txt
Run Code Online (Sandbox Code Playgroud)

我也试过用

ffmpeg -i 3_96025.MP4 **-copyts** -an -vf showinfo %10d.png 2> res.txt
Run Code Online (Sandbox Code Playgroud)

但结果完全一样.

我也试过ffprobe:

ffprobe -i 396025.MP4 -show_packets -select_streams v
Run Code Online (Sandbox Code Playgroud)

我得到的间隔也很完美.

我很确定gopro无法以如此完美的方式维持25 fps.另外,我记录了一个计时器,我可以看到每个帧不完全匹配0.04秒的间隔. 那么我有没有办法真正看到每帧被捕获的时间?

这是我用ffmpeg获得的输出的一部分供参考:

frame=   42 fps= 26 q=0.0 size=N/A time=00:00:01.36 bitrate=N/A    
n:42 pts:151200 pts_time:1.68 pos:3232584 fmt:yuv420p sar:1/1 s:1280x960 i:P iskey:0 type:B checksum:6A83E942 plane_checksum:[1C859E55 79A4ED3E 28E25DA0]
[Parsed_showinfo_0 @ 0037dea0] n:43 pts:154800 pts_time:1.72 pos:3255334 fmt:yuv420p sar:1/1 s:1280x960 i:P iskey:0 type:B checksum:5736F4C1 plane_checksum:[ACAD00D0 06FFDE34 …
Run Code Online (Sandbox Code Playgroud)

mpeg ffmpeg mpeg-4 gopro

7
推荐指数
0
解决办法
6070
查看次数

直播gopro 4镜头到web应用程序

我为你们提出了一个有趣的问题.我想建立一个网络应用程序,最好是在python/django中,从gopro相机拍摄实时流媒体素材并将其发布到我的网站.

您对ffmpeg,nginx或使用Livestream/Ustream api有什么看法?10-20秒的延迟仍然符合我的需求.

python django web-applications video-streaming gopro

6
推荐指数
0
解决办法
598
查看次数

GoPro照相机的视野

我使用Matlab的相机校准工具箱校准了我的GoPro Hero 4 Black ,并使用OpenCVcalibrationMatrixValues()计算了它的视野和焦距.但是,这些与GoPro的规格不同.相当于118.2/69.5 FOV,我得到95.4/63.4,焦距2.8mm而不是17.2mm.显然有些不对劲.

我认为校准本身是正确的,因为图像失真似乎运作良好.

任何人都可以给我一个暗示我犯了错误的提示吗?我在下面发布我的代码.

谢谢.

cameraMatrix = new Mat(3, 3, 6);
for (int i = 0; i < cameraMatrix.height(); i ++)
    for (int j = 0; j < cameraMatrix.width(); j ++) {
    cameraMatrix.put(i, j, 0);
}
cameraMatrix.put(0, 0, 582.18394);
cameraMatrix.put(0, 2, 663.50655);
cameraMatrix.put(1, 1, 582.52915);
cameraMatrix.put(1, 2, 378.74541);
cameraMatrix.put(2, 2, 1.);

org.opencv.core.Size size = new org.opencv.core.Size(1280, 720);
//output parameters
double [] fovx = new double[1];
double [] fovy = …
Run Code Online (Sandbox Code Playgroud)

opencv computer-vision fieldofview camera-calibration gopro

6
推荐指数
1
解决办法
2222
查看次数

如何使用ffmpeg稳定goPro视频?

我想知道一种使用简单的批处理和ffmpeg在Windows上稳定goPro视频的简便方法。

video ffmpeg gopro

6
推荐指数
1
解决办法
3534
查看次数

从加速度计算g力1秒间隔

我从GoPro元数据文件(github库)中提取了带有加速度计数据(m/s 2)的CSV文件.

一秒钟的加速度计在3轴上包含约200个数据样本.此文件的示例如下所示:

加速度计数据样本

在PHP中,对于X轴上的每个瞬时值,我将m/s 2转换为:

function convert_meters_per_second_squared_to_g($ms2) {
    // 1g = 9.80665 m/s2
    return $ms2 * 0.101971621297793; // 1 / 9.80665 == 0.101971621297793
}
Run Code Online (Sandbox Code Playgroud)

CSV文件的200行(1秒)示例代码:

$acc_x_summed_up = 0;
if (($handle = fopen($filepath, "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        list ($millis, $acc_x, $acc_y, $acc_z) = $data;

        $acc_x_summed_up += $acc_x;
    }
}

$g_force = convert_meters_per_second_squared_to_g($acc_x_summed_up);
Run Code Online (Sandbox Code Playgroud)

但是如何在X轴上显示每秒的g力值?我试图总结这些值并转换它们,但结果显然是错误的,因为我得到的值高达63 G.

[更新:]

  1. 即时g力值(所有3轴,分开)显示在图表上(使用高图).gopro视频文件(使用YouTube javascript API)与图表并排显示并实时播放.
  2. 图表和视频已经很好地并排工作.只有g-force值是错误的.
    注意:视频文件有一个g-force叠加(嵌入其中),显示2轴(x,y).
  3. 我已经奖励了@Joseph_J,因为它似乎是一个很好的解决方案,因为我被迫通过SO系统给予奖励(周末).谢谢大家的回答!

php gopro

6
推荐指数
1
解决办法
550
查看次数

OpenCV 和 GoPro - VideoCapture 流中的空帧

我有一个连接到视频采集卡 (AverMedia Game Broadcaster HD) 的 GoPro Hero 3+(黑色)。我只是想在 OpenCV 中获取视频流。使用罗技网络摄像头没有任何问题。使用的代码如下。

VideoCapture cap;
cap.open(0);

waitKey(300);

//cap.set(CV_CAP_PROP_FRAME_WIDTH, 1280);
//cap.set(CV_CAP_PROP_FRAME_HEIGHT, 720);

if (cap.isOpened()){
    cout << "Cam identified" << endl;
}

namedWindow("dst", 1);

while (1){

Mat frame;

if (!cap.read(frame)) {
    std::cout << "Unable to read frame from video stream" << std::endl;
    continue;
}

imshow("dst", frame);

[...]

}
Run Code Online (Sandbox Code Playgroud)

使用 GoPro 会发生以下情况:OpenCV 能够打开 VideoCapture(“已识别摄像头”)但无法读取任何帧(只有灰色屏幕和输出:“无法从视频流中读取帧”)。我还用 frame.empty(); 检查了这一点。

我知道视频采集卡工作正常,因为 Unity 使用 GoPro 流打开了一个 WebCamTexture,没有任何问题。我阅读了 OpenCv 中的编解码器问题,因此我已经尝试使用 FFMPEG 支持编译 OpenCV。现在可以显示 GoPro 录制的 MP4 视频,但流仍然不起作用。

我使用 OpenCV 2.48、Windows 7 …

c++ opencv ffmpeg video-capture gopro

5
推荐指数
1
解决办法
5671
查看次数

如何使用Python将GoPro Hero 4摄像机直播流连接到openCV?

我在尝试从新的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
Run Code Online (Sandbox Code Playgroud)

循环中断,因为抓取总是等于false,这意味着openCV一无所获。

python opencv gopro

5
推荐指数
1
解决办法
1万
查看次数

GoPro (MP4) 视频时间戳同步精度为毫秒

我需要您帮助解决数据同步问题...我目前正在尝试将我的 GoPro 视频与现实世界时间(也就是我的笔记本)同步。我设法完美地同步了我的笔记本电脑和 GoPro 3+ black 的日期和时间。问题是,当 GoPro 将文件保存在磁盘中时,它会将创建时间的毫秒数向上舍入(毫秒始终为 000000)。因此,不可能实现完美同步。附件是MP4视频的元信息图片(由ffprobe提取)。

我的问题是:我必须做什么,所以 GoPro 实际上以毫秒的精度保存了 creation_time?

另一个小问题:看附件图,我们看到“timecode”是一个时间同步数据,格式为小时:分钟:秒:帧。我在想我可以使用“帧”值来计算丢失的毫秒值。如果我们以这个附件为例,我们可以看到帧值为“36”。这意味着它开始记录的毫秒是与 FPS 的第 36 帧相关的毫秒(在这个视频中:60fps)值:像 1000/60 * 36 这样的 600 毫秒,因此这个视频的实际创建时间将是 : 2017-07-19T18:10:34.600

这个逻辑对吗?它没有用!我不知道还能做什么。

PS:我需要这种时间精度,因为我会将视频帧与以 11hz 记录的外部传感器数据同步。

请帮忙

在此处输入图片说明

更新

我忘了说,即使你查看 GoPro SSD 卡内部的原始原始文件信息,使用“stats”读取创建时间(见附件)它仍然具有相同的时间戳,没有毫秒。

在此处输入图片说明

video mp4 ffmpeg ffprobe gopro

5
推荐指数
0
解决办法
713
查看次数