Ich verwende Matlab, um den optischen Videofluss zu analysieren, und was ich tun möchte, ist den optischen Fluss zwischen Videobildern zu wiegen.(Matlab) Wie ändere ich schreibgeschützt opticalflow Objekteigenschaften
Mein Problem ist, ich weiß nicht, wie die nurOptischer Fluss Objekt-Eigenschaft lesen zu ändern, speziell, Größe Eigenschaft.
Hier mein Testcode ist (diese einfache Code ist auf der MathWork Hilfe-Dokumentation http://uk.mathworks.com/help/vision/ref/opticalflow-class.html):
opflow = opticalFlow(randn(5,5),randn(5,5))
überprüfen Sie die Ausgabe, die wir haben:
Optischer Fluss mit den Eigenschaften:
Vx: [5x5 double]
Vy: [5x5 double]
Orientation: [5x5 double]
Magnitude: [5x5 double]
Dann überprüfen wir die Eigenschaft opflow.Magnitude, wir haben:
>>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
Wenn ich versuche, die Optischer Fluss Objekt (opflow hier) zu modifizieren, berichten die Matlab einen Fehler:
>> opflow.Magnitude(1,1)=0
You cannot set the read-only property 'Magnitude' of opticalFlow.
ich dann Setter Methoden geprüft und googeln einige andere Dokumente kann aber immer noch keine Lösung finden. Ich weiß, dass ich sie in eine andere Matrix kopieren und dann diese neue Matrix modifizieren könnte, aber es wird Speicher verschwenden, während der optische Fluss für eine lange Videosequenz berechnet wird. Gibt es eine Möglichkeit, diese schreibgeschützte Eigenschaft zu ändern?
Danke für diese Erklärung, aber es ist immer noch fehlgeschlagen, wenn ich versuche, Vx oder Vy direkt zu ändern ... 'opflow.Vx (1,1) = 0' funktioniert immer noch nicht .... – drinking
Es stellt sich heraus, dass Sie es überhaupt nicht einstellen können, ganz zu schweigen von der Änderung eines einzelnen Elements wie in Ihrem Kommentar. Bitte sehen Sie die aktualisierte Antwort. –
Vielen Dank für diese detaillierte Erklärung! – drinking