Как улучшить разрешение OpenCV и python VideoWriter?



У меня есть скрипт, который использует OpenCV и python и создает видео (формат avi) из набора png образы.



Разрешение этих изображений хорошее.



Проблема в том, что разрешение полученного видео очень низкое.

Как я могу улучшить разрешение?



Связано ли низкое разрешение с форматом изображений?



Код:



writer  = cv2.VideoWriter( "C:Users.../demo3_4.avi", -1, 1, ( width, height ) )
nFrames = 24

for i in range( 1, nFrames ):
img = cv2.imread( os.path.join( str( inf ), "colorraster%d.jpg"%i ) )
writer.write( img )

cv2.destroyAllWindows()
writer.release()
906   2  

2 ответов:

Согласно документации , cv2.VideoWriter имеет параметр fourcc, который определяет кодек , используемый для сжатия кадров. Теперь вы указываете "-1", что означает некоторый кодек по умолчанию. Я бы предложил поэкспериментировать с различными кодек-ками из этого списка и посмотреть, что дает наилучший результат.

Update: чтобы перевести кодек в int, документы рекомендуют следующее: CV_FOURCC('P','I','M','1') Если вы хотите попробовать кодек PIM1.

Как улучшить разрешение?

Генерируйте выходной поток с разумным размером пикселя frameSize и не опустошайте качество информации ( вы заявили выше, чтобы иметь во входных данных (в статических пикселях)) с "кумулятивным продуктом" низкого уровня.FPS частота кадров в секунду и кодек с большими потерями( CV_FOURCC ).

Синтаксис:

>>> print cv2.VideoWriter.__doc__
VideoWriter( [ filename,
               fourcc,           # <--------- ref. below
               fps,              #            1 fps
               frameSize[,       #            73 * 59 px
               isColor  ]
               ]
              ) -> <VideoWriter object>

>>> print cv2.cv.FOURCC.__doc__
CV_FOURCC(c1, c2, c3, c4) -> int

>>> cv2.cv.FOURCC( *"XVID" )    1145656920
>>> cv2.cv.FOURCC( *"MJPG" )    1196444237
>>> cv2.cv.FOURCC( *"X264" )     875967064
>>> cv2.cv.FOURCC( *"DIB " )     541215044
>>> cv2.cv.FOURCC( *"WMV1" )     827739479
>>> cv2.cv.FOURCC( *"WMV2" )     844516695

Дальнейшие показания:

FourCC - это 4-байтовый код, используемый для указания видеокодек. Список доступных кодов можно найти в разделе fourcc.org. Это зависит от платформы. Следующие кодеки работают нормально: В Федоре: DIVX, XVID, MJPG, X264, WMV1, WMV2. (XVID предпочтительнее. MJPG приводит к видео высокого размера. X264 дает очень маленький размер видео ) В окнах: DIVX ( еще предстоит проверить и добавить)

Код FourCC передается как cv2.VideoWriter_fourcc('M','J','P','G') или cv2.VideoWriter_fourcc(*'MJPG) для MJPG.

"""                                                                 # >>> http://docs.opencv.org/master/dd/d43/tutorial_py_video_display.html#gsc.tab=0
fourcc  = cv2.cv.FOURCC(  *"DIB " )
video   = cv2.VideoWriter( 'ATC_LKPR_output.avi', fourcc, 30, size ) # fps = 30, size = ( 1024, 512 )

Comments

    Ничего не найдено.