Python Opencv load videa vysvetlenie

Python Opencv load videa vysvetlenie
« kdy: 02. 09. 2019, 10:20:34 »
Dobry den.

Pre spracovanie kratkeho videa pouzivam opencv4 + python 3.7. Mam par otazok na ktore som nenasiel odpoved a nie je mi celkom jasne ako to funguje.
1. cap = cv2.VideoCapture('chaplin.mp4') nacita subor chaplin ale kam? Do pamete alebo s neho cita frame by frame. Bolo by mozme "nieako" natiahnut to video do ram a prinutit opencv citat s neho alebo to uz je by default?
2. rovnako to je to s net = cv2.dnn.readNet(args.weights, args.config) tiez mi nie je jasne ci sa ta siet natiahla do ram a ak nie ako to spravit?



Re:Python Opencv load videa vysvetlenie
« Odpověď #1 kdy: 02. 09. 2019, 14:38:59 »
1. cap = cv2.VideoCapture('chaplin.mp4') nacita subor chaplin ale kam? Do pamete alebo s neho cita frame by frame. Bolo by mozme "nieako" natiahnut to video do ram a prinutit opencv citat s neho alebo to uz je by default?

VideoCapture je obecné rozhraní, které dá video stream, ze které se dá číst. Je jedno, jestli
je to video, nebo kamera, nebo síťovej stream, nebo cokoliv. Proto nedává smysl otázka
načtení celého videa do paměti - když je to kamera, tak to nejde. Co když je to 500GB file?
Vy si pak říkáte dej mi frame, nebo tak něco. Myslím, že cap.read(...)

Proč Vás to zajímá? Tohle jsou věci, které má řešit knihovna a "underlying" knihovny spolu
s operačním systémem, a pokud nemáte nějaký okrajový případ, tak se o to knihovny + os
postarají lépe samy, než když je budete zkoušet k něčemu přesvědčovat.

U readNet si naopak nedovedu představit, že by to nenačetlo do paměti, protože když se to
má používat, tak to tak či onak v paměti být musí. Ale třeba se pletu...

Re:Python Opencv load videa vysvetlenie
« Odpověď #2 kdy: 04. 09. 2019, 08:42:04 »
Petr Blahos
s readNet mate pravdu nahraval som rozne modely a ramka sa menila zhruba o velkost modelu +10%

s tym VideoCapture to nie je tak jednoznacne. Pokial je to webkamera alebo stream (uz tam je to diskutovatelne) nema load to ramky vyznam ale pri tom spracovani videa by to vyznam malo. Problem je ze neviem dohladat relevantne informacie ako to pripadne spravit load video file do ramky a spracovat skrz opencv

Re:Python Opencv load videa vysvetlenie
« Odpověď #3 kdy: 04. 09. 2019, 13:08:09 »
Petr Blahos
s readNet mate pravdu nahraval som rozne modely a ramka sa menila zhruba o velkost modelu +10%

s tym VideoCapture to nie je tak jednoznacne. Pokial je to webkamera alebo stream (uz tam je to diskutovatelne) nema load to ramky vyznam ale pri tom spracovani videa by to vyznam malo. Problem je ze neviem dohladat relevantne informacie ako to pripadne spravit load video file do ramky a spracovat skrz opencv
Co přesně myslíte tím loadem do ramky? Jakékoliv video z jakéhokoliv zdroje se musí načítat do ramky a tam dekódovat.

VideoCapture interně dělá to, že načítá komprimované packety a ty dekóduje na jednotlivé snímky. Použité packety ani snímky v paměti nedrží déle než je nutné. Nic jiného moc nedává kvůli potřebnému množství paměti smysl. Pokud potřebujete nějakou historii dekódovaných snímků, musíte si je držet sám. Více průchodů nebo seekování znamená že se jednotlivé snímky budou pravděpodobně dekódovat znova a znova.

OpenCV videocapture je hodně jednoduchý nástroj. Neumí toho o moc víc, než přečtení videa snímek po snímku.

Re:Python Opencv load videa vysvetlenie
« Odpověď #4 kdy: 18. 09. 2019, 12:25:01 »
Dakujem za odpovede.

Pochopil som co som potreboval. Preco to robim prave tak ako to robima focusujem na procesor a ramku je ten ze
1. chcel by som to neskor prevadzkovat na pine64
2. nemam HW. Jeden cca 10 rocny notebook a srandy ako NVidia co je na to ideal su mimo moj budget na dalsy rok. Max si tak mozem kupit mysku :) Tak pracujem s tym co mam