Я использую Matlab для анализа оптического потока видео, и что я хочу сделать, это взвешивание оптического потока между видеокадрами.(Matlab) Как изменить свойства объекта оптического потока только для чтения
Моей проблема, я не знаю, как модифицировать только для чтения оптического потока свойства объекта, особенно, величину свойства.
Вот мой тестовый код (этот простой код на справочной документации MathWork http://uk.mathworks.com/help/vision/ref/opticalflow-class.html):
opflow = opticalFlow(randn(5,5),randn(5,5))
проверки на выходе мы имеем:
оптический поток со свойствами:
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
Когда я пытаюсь изменить оптический поток объект (opflow здесь), то Matlab сообщение об ошибке:
>> opflow.Magnitude(1,1)=0
You cannot set the read-only property 'Magnitude' of opticalFlow.
Затем я проверил инкубационных методы и гугле некоторые другие документы но до сих пор не может найти решение. Я знаю, что могу скопировать их в другую матрицу, а затем изменить эту новую матрицу, но она будет тратить память при вычислении оптического потока для длинной видеопоследовательности. Есть ли способ изменить это свойство только для чтения?
Спасибо за это объяснение, но он по-прежнему не работает, когда я пытаюсь изменить Vx или Vy напрямую ... 'opflow.Vx (1,1) = 0' все еще не работает .... – drinking
Оказывается, вы не можете установить его вообще, не говоря уже о внесении изменений в один элемент, как в вашем комментарии. См. Обновленный ответ. –
Большое вам спасибо за подробное объяснение! – drinking