спасибо, действительно, так при прочих равных условиях - векторы движения показывает белыми точками
![](/smile.svg)
и это прогресс, т.к. хотя бы нет сообщений об ошибках.
не могу похвастать бОльшими успехами, т.к. замена MShow на MMask не приводит к результату, которого я бы ожидал, а именно, результирующий клип получается кратной исходному высоты, в основном зеленого цвета с фрагментами исходного видео, где движение теперь происходит зигзагообразно т.е. туда-сюда, примерно как при сбитом порядке полей в интерлейсном видео, но более длительными кусками.
вполне допускаю, что делаю что-то не так и мало параметров указал при вызове функций, но это попробую дожать чуть позже в экспериментах.
пока рад уже тому, что хоть ошибки нет.
Добавление от 08.07.2015 21:55:
разобрался более-менее.
работает, например, для 1.х mvtools такой скрипт:
loadplugin("mvtools.dll")
source = ConvertToYV12(BicubicResize(directshowsource("GOPR0003.MP4"),640,640))
vectors = source.MVAnalyse(blksize=8, isb = true, truemotion=true, search=0, delta = 2, idx = 1, overlap=4,chroma=true)
MVShow(source, vectors)
# return source.MotionMask() работеат +- контурами
return MVMask(source, vectors, ml=10 )
а для mvtools2 такой:
loadplugin("mvtools2.dll")
source = ConvertToYV12(BicubicResize(directshowsource("GOPR0003.MP4"),640,640))
A = MSuper(source)
# vectors = A.MAnalyse(isb = false)
vectors = A.MAnalyse(blksize=8, isb = true, truemotion=true, search=0, delta = 2, overlap=4,chroma=true)
# A.MShow(vectors)
return source.MMask(vectors, ml = 10)
в принципе, и тот и другой какую-то маску движущегося объекта возвращает, качество пока не готов сравнить, мне годится в качестве отправной точки.
помимо мутного синтаксиса (я имею в виду разницу в вызове
clip.MAnalyse( и
MAnalyse(clip, ) тех, кто сталкивается с этим инструментом впервые, подстерегает неудобство представления маски: по умолчанию порог, выше которого маска "донасыщается" до значения 255 равен 100 и если движение в кадре медленное или съемка велась на больших fps (100 кадров в секунду в моем случае) то шансов оказаться выше порога у маски очень немного и поэтому она при покадровом просмотре выглядит как медленное плавание по кадру некоего чуть более темного участка на зеленом фоне.
это "чуть" можно обнаружить пипеткой фотошопа или резко уменьшить порог насыщения маски, как пришлось сделать мне (вместо 100 поставил 10) - тогда да, по маске действительно становится возможно сказать, что в кадре движется объект.
другая проблема - для маленьких разрешений кадра видео движение происходит на меньшее количество пикселов, поэтому чем кадр меньше в абсолютном понимании, тем менее контрастна маска движения.
в пределе небыстро движущийся объект (или снятый в большим fps) в кадре низкого разрешения становится неразличим вообще.