【发布时间】:2016-11-13 22:33:36
【问题描述】:
我正在使用 Matlab 分析视频光流,我想做的是权衡视频帧之间的光流。
我的问题是我不知道如何修改 只读 opticalFlow 对象属性,特别是 幅度属性。
这是我的测试代码(这个简单的代码在 MathWork 帮助文档http://uk.mathworks.com/help/vision/ref/opticalflow-class.html):
opflow = opticalFlow(randn(5,5),randn(5,5))
检查输出,我们有:
opticalFlow 与属性:
Vx: [5x5 double]
Vy: [5x5 double]
Orientation: [5x5 double]
Magnitude: [5x5 double]
然后我们检查 opflow.Magnitude 属性,我们有:
>>opflow.Magnitude
ans =
1.1661 1.5809 1.9726 0.2291 0.6722
1.9727 1.2263 3.0523 0.2715 1.2187
2.2791 1.1224 1.0470 1.5235 0.9531
0.9109 3.6688 1.3717 1.4433 1.9629
0.8494 4.0421 1.8548 1.6603 1.2122
当我尝试修改opticalFlow对象时(opflow这里),Matlab报错:
>> opflow.Magnitude(1,1)=0
You cannot set the read-only property 'Magnitude' of opticalFlow.
然后我检查了 setter 方法并搜索了一些其他文档,但仍然找不到解决方案。我知道我可以将它们复制到另一个矩阵,然后修改那个新矩阵,但是在计算长视频序列的光流时会浪费内存。 有什么办法可以修改这个只读属性吗?
【问题讨论】:
标签: matlab computer-vision matlab-cvst opticalflow