任何人都可以帮助我检测图像中的移动物体并使用c#将其提取出来?我试图通过从前一个图像中减去图像来提取它们,但这对我不起作用
我正在尝试使用 ffmpeg 更改视频尺寸。例如,用户正在上传 1280*960 的视频。
我需要获得 640*480 的视频作为回报。
我试过这段代码,它的工作原理
exec($ffmpegPath." -i ".$srcFile." -ar 22050 -ab 32 -f flv -s 640x480".$destFile,$tmp);
Run Code Online (Sandbox Code Playgroud)
但是这种方法不能保持视频的宽度/高度平衡(即视频 5000*480 变成 640*480 并且从左到右看起来都被压缩了)。
在这种尺寸(5000 * 480)的情况下,我需要在出口处获取视频,例如 640 * 61 我的意思是固定高度不适合我。
我查看互联网,发现这个主题 https://superuser.com/questions/201051/resize-videos-with-different-widths-to-a-fixed-height-preserving-aspect-ratio-wi http:// delogics.blogspot.com/2011/11/ffmpeg-maintain-aspect-ratio-with-fixed.html
但它们都不适合我(ffmpeg 甚至不适用于此代码,也许我在我的 ffmpeg 字符串中添加他们的代码部分时犯了错误)
请帮助我改进我的代码
谢谢

大家好!
ffMpeg -timstamp
Run Code Online (Sandbox Code Playgroud)
选项工作喜欢上图?07:21:54 07/07/05在黑匣子容器中的白色文本.
在ubuntu 12.04中输入了这样的执行.
ffmpeg -y -f video4linux2 -s vga -r 30 -fs 1M -i /dev/video0 -timestamp now -copyts ./USB1_Test_vga.mp4
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
显示视频录制时间还有其他选项吗?
因此,我有以下代码来进行记录,并且质量绝对糟糕。我认为我必须设置错误,但是我尝试了两种方法。使用“ CamcorderProfile”方式然后是“手动”方式,您可以看到摄像机代码已被注释掉。两者都给出完全相同的结果。
Camera _camera = Camera.Open (1);
_camera.Unlock ();
recorder = new MediaRecorder ();
recorder.SetCamera (_camera);
recorder.SetAudioSource (AudioSource.Mic);
recorder.SetVideoSource (VideoSource.Camera);
recorder.SetOutputFormat (OutputFormat.Default);
recorder.SetAudioEncoder (AudioEncoder.Default);
recorder.SetVideoEncoder (VideoEncoder.Default);
//CamcorderProfile p = CamcorderProfile.Get(0, CamcorderQuality.High);
//recorder.SetProfile(p);
recorder.SetOutputFile (path);
recorder.SetPreviewDisplay(video.Holder.Surface);
recorder.Prepare ();
recorder.Start ();
Run Code Online (Sandbox Code Playgroud)
这样就可以了,但这就是问题所在。这是我录制时的预览窗口的图片,这是我播放时的视频的图片。您实际上不能说出来,因为屏幕截图非常糟糕,但是任何一种颜色都不正确(它几乎没有颜色),我认为颜色通道一定存在某种问题。例如,这里是与genymotion“虚拟相机”的另一个比较。这是正确的版本。这是奇怪的播放版本。
android video-capture video-processing android-mediaplayer mediarecorder
我使用 ffmpeg 旋转视频,代码如下:
ffmpeg -i nd750_a0040.MOV -vf "transpose=dir=clock, transpose=dir=clock" out.mkv
Run Code Online (Sandbox Code Playgroud)
生成的文件几乎比输入文件小 10 倍。我发现这个问题解决了一个相关问题,并建议将从以下内容获得的编解码器和比特率传递给 ffmpeg:
bitratev="$(ffmpeg -i "$1" -f null - |& grep video: | awk -F'[:|kB]' '{print $2}')"
codecv="$(ffprobe -loglevel error -select_streams v:0 -show_entries stream=codec_name -of default=nk=1:nw=1 "$1")"
Run Code Online (Sandbox Code Playgroud)
但是,这两个命令分别为两个文件提供了相同的输出:2643和h264。我假设 ffmpeg 默认情况下将这些值保持为相同的输出是否正确?
但是,如果我检查文件,ffmpeg -i我会得到不同的比特率值:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'nd750_a0040.MOV':
Metadata:
major_brand : qt
minor_version : 537331968
compatible_brands: qt niko
creation_time : 2016-06-18 04:28:03
Duration: 00:15:40.74, start: 0.000000, bitrate: 11569 kb/s
Stream #0:0(eng): Video: …Run Code Online (Sandbox Code Playgroud) 我正在向动画 GIF 添加文本。
不过,我希望文本出现在特定时间,但我无法做到这一点。
这就是我所拥有的:
ffmpeg -i image.gif -vf 'drawtext=textfile=/path/to/text.txt:x=0:y=0:fontfile=/path/to/font.ttf:fontsize=64:fontcolor=white:borderw=3:bordercolor=black:box=0'
Run Code Online (Sandbox Code Playgroud)
我尝试了不同的方法,但似乎没有任何效果。我可以使用诸如 之类的东西来操纵视频的时间-itsoffset 00:00:30,但不能使用文本。
我有一堆带有各种剪辑的视频,拼接在一起。这些剪辑来自移动摄像机,尽管在剪辑期间具有相同的主题和背景,并且剪辑之间的过渡通常很快并且没有标记。我想将视频剪辑得尽可能接近原始状态。
什么算法/方法可用于检测视频中的场景变化?我正在尝试使用帧减法方法,但肯定有更复杂的方法。
ps我正在寻找更传统的机器视觉方法(相对于深度学习)
我想对视频文件中的对象进行语义分割。我更喜欢在 COCO 数据集(或 COCO stuff 数据集)上使用预先训练的模型,并开始使用它对我自己的视频文件进行语义分割和对象检测。我遇到的大多数线程都在谈论 COCO 数据集上的训练算法。我正在寻找一个可以直接用于分割我自己的视频文件的预训练模型(一个冻结的图形文件)。
谁能指导我如何做到这一点?
PS 我可以使用来自 tensorflow model zoo 的预训练模型进行对象检测,但我无法将其扩展为对象分割。
video-processing image-segmentation tensorflow mscoco semantic-segmentation
我正在用opencv制作一个小的“ Dashcam”。我想创建一个以当前日期和时间命名的新视频文件的每一分钟都很简单。这些视频文件的内容是网络摄像头的框架。
但是,经过第一分钟后,不再生成视频文件。
这是我的注释代码:
#include <iostream>
#include <windows.h>
#include <ctime>
#include <time.h>
#include <fstream>
#include <opencv2/core/core.hpp>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int record_video()
{
VideoCapture cam(0);
if (!cam.isOpened())
{
cout << "Error from webcam" << endl;
return -1;
}
time_t t = time(0);
struct tm* now = localtime( & t );
char buffer[80];
strftime(buffer, 80, "%F_%Hh%M.wmv", now); //get the date and time for my file
VideoWriter video(buffer, CV_FOURCC('W', 'M', 'V', '2'), 30, Size(640, 480), true); //Creation of …Run Code Online (Sandbox Code Playgroud) FFMPEG 几个月前推出了新版本的 FFMPEG,其中包含新的过滤器“overlay_cuda”,该过滤器与“overlay”相同,但使用 Nvidia 卡来应用它。
我在FFMPEG网站上找到了该过滤器的描述,但没有如何使用它的示例。我发现的唯一示例来自开发人员提交,但是将视频或照片放在另一个视频上。
我在普通覆盖过滤器之前使用宽度两倍的 nullsrc 图像来执行此操作,但现在我不知道如何使用此过滤器。
提交描述: https: //patchwork.ffmpeg.org/project/ffmpeg/patch/20200318071955.2329-1-yyyaroslav@gmail.com/ ffmpeg 文档网页:https: //ffmpeg.org/ffmpeg-filters.html#overlay_005fcuda-1
我希望你可以帮助我。
更新:
我做了这个 FFmpeg 命令:
ffmpeg -y -loglevel info \
-i $video_1 \
-hwaccel cuda -hwaccel_output_format cuda -i $video_2 \
-filter_complex \
" \
[0:v]pad=w=2*iw:h=ih:x=0:y=0,hwupload_cuda[base];
[base][1:v]overlay_cuda=x=800:y=0" \
-an -c:v h264_nvenc overlay_test.mp4
Run Code Online (Sandbox Code Playgroud)
但我收到此错误消息:
[overlay_cuda @ 0x55fdec4b2ec0] Can't overlay nv12 on yuv420p
[Parsed_overlay_cuda_2 @ 0x55fdec4b2d80] Failed to configure output pad on Parsed_overlay_cuda_2
Error reinitializing filters!
Failed to inject frame into filter network: Invalid …Run Code Online (Sandbox Code Playgroud)