有一个编译命令行应用程序在这里做这个.
是否有Cocoa API来查询这些数据?
让我们假设我有一个在画布上播放的视频,我想对该视频做一些基本分析,如边缘检测,运动检测和一般运动方向.我该如何处理这个问题?你能指出一些关于如何实现它们的简单算法和一般想法的正确方向吗?
我假设这些东西通常不用JS编码,所以我不希望任何开箱即用的东西.
有任何想法吗?
我有一个有趣的问题......我似乎无法找到解决方案.我正在使用ObjectAnimator来旋转ImageView; 但onTouchListener似乎只是注册了MotionEvent.ACTION_DOWN.(我从Log Cats中推断出这个,还有MotionEvent.ACTION_MOVE和MotionEvent.ACTION_UP).
我想也许问题可能与试图同时倾听和动画片有关.我在相对布局中包装了imageview和线性布局(设置为MATCH PARENT),并注册了线性布局以监听触摸事件.线性布局具有相同的问题; 只处理MotionEvent.ACTION_UP.有什么东西我需要去注册MotionEvent.ACTION_MOVE吗?
这是我的代码:
touch_pad = (LinearLayout) findViewById(R.id.layout_touch_capture);
touch_pad.setOnTouchListener(this);
touch_pad.requestFocus();
public boolean onTouch(View v, MotionEvent event) {
switch(v.getId()) {
case (R.id.layout_touch_capture):
long end = 0;
long start = 0;
float y = event.getY();
float y_sum = y;
float x = event.getX();
switch(event.getAction()) {
case (MotionEvent.ACTION_UP):
end = animator.getCurrentPlayTime();
Log.d("WheelActivity", "end location = " + end);
break;
case (MotionEvent.ACTION_MOVE):
Log.d("WheelActivity", "event.getY() = " + y);
y_sum += y;
animator.setCurrentPlayTime((long) (start + y_sum));
Log.d("WheelActivity", "animator play time = " …Run Code Online (Sandbox Code Playgroud) 我看到与opencv运动检测相关的查询,但我的要求更简单,所以我再次提出问题.我想分析视频帧,看看帧中是否有变化.已经识别出在帧中发生的任何类型的运动.如果发生某些事情,我只是想收到通知.我不需要跟踪/绘制轮廓.
尝试:
1)使用OpenCV(TM_CCORR_NORMED)进行模板匹配.
我使用cvMinMaxLoc&获得相似性索引
if( sim_index > threshold )
"Nothing chnged"
else
"Changed
Run Code Online (Sandbox Code Playgroud)
面临的问题:
我找不到决定如何设置阈值的方法.虚假匹配和完美的价值非常接近.
2)方法2
a)使运行平均值
b)取当前帧和移动平均值之间的abs差值.
c)阈值并使其成为二进制
d)计算非零值的数量
再次坚持如何对其进行阈值处理,因为即使对于非常相似的帧,我也会获得大量的非零值.
请告诉我应该采取什么方法.我是否采用上述两种方法朝着正确的方向前进,或者是否有一种简单的方法可以在所有最通用的场景中使用.
Microsoft Surface Pro具有陀螺仪和加速度计,Windows 8以及完整的.NET框架.
我发现大多数关于动作API的文章都指向Windows Phone 8 API.
我应该使用什么.NET Framework命名空间和类来获取陀螺仪和加速度计数据?
我正在构建一个非常令人兴奋的项目,并且我正在创建此帖子以获取新的,新鲜的和疯狂的想法。
我有一堵大墙,我正在向它开枪。我需要计算弹丸撞击的确切X和Y坐标。
有几个挑战:
综上所述,我完全可以选择。前者不受限制,我愿意改变方法并从头开始。
到目前为止,我的方法是设置三个运动传感器,并根据冲击波对位置进行三角测量。到目前为止,它是不准确的,需要大量调整。
如果您想改善我的方法,建议我可能缺少的传感器或软件,欢迎您,但正如我所说,我愿意重新开始。
该项目将完成,因此,如果您的解决方案很棒,您将为非常酷的事情做出贡献,我可以给您发送照片,甚至邀请您与我一起拍摄;-)
谁能告诉我,SAD和SDD有什么区别?我在谈论绝对差异的总和和平方差异的总和.
只是在SSD中你得到方块的差异度量?我可以只使用度量的绝对值,而不是提高到第二个幂.
什么是广场有用?
我想测试ViBe算法的背景减法.目前我正在使用opencv库.我在opencv/samples/gpu/bgfg_segm.cpp和bgfg_vibe.cpp文件中找到了一个示例实现.这些文件在gpu模块下.现在我有一个没有GPU的系统.当我尝试运行代码时,它会在第一帧的初始化时崩溃.谁能告诉我如何解决这个问题?
提前致谢.
我试图通过ffmpeg(在c ++中)获取mpeg视频的运动矢量.我遇到的问题是,motion_val以及AVFrame类的motion_subsample_log2和mb_type保持为空和/或未初始化(调试器显示为0x0)并且似乎它们仅在我阅读的兼容性原因中可用ffmpeg wiki,你可以通过命令行调试视频的运动矢量
ffmpeg -vismv pf -i input.mp4 output.mp4
Run Code Online (Sandbox Code Playgroud)
结果是output.mp4具有运动矢量箭头.所以我在代码中搜索了-vismv参数,并在libavcodec\options.ca中找到了很长的选项列表:
{"vismv", "visualize motion vectors (MVs)", OFFSET(debug_mv), FF_OPT_TYPE_INT, DEFAULT, 0, INT_MAX, V|D, "debug_mv"},
Run Code Online (Sandbox Code Playgroud)
我想这行会以某种方式影响AVCodecContext的debug_mv.通过这个假设,我搜索了更多信息,我发现了一些我认为可能有用的代码片段.
pAVCodecContext->debug_mv = FF_DEBUG_VIS_MV_P_FOR | FF_DEBUG_VIS_MV_B_FOR | FF_DEBUG_MB_TYPE | FF_DEBUG_MV;
Run Code Online (Sandbox Code Playgroud)
和
pAVCodecContext->debug |= FF_DEBUG_MV;
Run Code Online (Sandbox Code Playgroud)
但两者都没有触发计算或填充motion_val数组.顺便说一下,我的代码基于Victor Hsieh和Jiasi Chen的代码,这段代码基本上就是ffmpeg源代码(libavcodec\mpegvideo.c).我还试图找到(也在文档的帮助下)触发计算的代码片段,但由于代码的复杂性,我没有得到任何结果.现在的问题是,是否有可能填充这些变量或开始计算运动矢量表,或者是否有任何其他替代方法来获得mpeg帧的每个块的运动矢量.
编辑:
我忘了提到我的ffmpeg版本
Zeranoe的FFmpeg版本:2014-07-08 git-14e2406
更改为更新版本(2.5),但它没有更改/解决问题.