Я использую OpenCV с Python для обработки видеопотока.Я хотел бы реализовать свой собственный алгоритм, поэтому мне нужно перебирать каждый кадр.
То, что у меня есть, работает, но слишком медленно, чтобы работать в режиме реального времени.Я знаю, что Python не самый эффективный язык программирования, но я полагаю, что он может работать намного лучше, учитывая, что встроенные функции преобразования изображений очень быстрые.Numpy может быть путь, но я еще не знаком с этим.
import cv, numpy
vidFile = cv.CaptureFromFile( 'sample.avi' )
nFrames = int( cv.GetCaptureProperty( vidFile, cv.CV_CAP_PROP_FRAME_COUNT ) )
for f in xrange( nFrames ):
frameImg = cv.QueryFrame( vidFile )
frameMat=cv.GetMat(frameImg)
print "mat ", mat[3,1]
for x in xrange(frameMat.cols):
for y in xrange(frameMat.rows):
# just an example, multiply all 3 components by 0.5
frameMat[y, x] = tuple(c*0.5 for c in frameMat[y, x])
cv.ShowImage( "My Video Window", frameMat )
if cv.WaitKey( waitPerFrameInMillisec ) == 27:
break
Как я могу ускорить процесс?Спасибо, б_м