Download YouTube

テスト用の動画をYouTubeから調達

pip が壊れたので、修復

pip を実行すると、次のエラーが発生するようになった。原因不明。

PS C:\Users\仮面\Desktop\VideoTest> pip
Traceback (most recent call last):
File “d:\program files\python37\lib\runpy.py”, line 193, in run_module_as_main “main“, mod_spec) File “d:\program files\python37\lib\runpy.py”, line 85, in _run_code exec(code, run_globals) File “D:\Program Files\Python37\Scripts\pip.exe__main_.py”, line 5, in
ModuleNotFoundError: No module named ‘pip’

そこで、python -m ensurepip により、pip を修復

PS C:\Users\仮面\Desktop\VideoTest> python -m ensurepip
Looking in links: C:\Users\仮面\AppData\Local\Temp\tmp2qepvojk
Requirement already satisfied: setuptools in d:\program files\python37\lib\site-packages (40.8.0)
Collecting pip
Installing collected packages: pip
Successfully installed pip-19.0.3

Video の DCT, IDCT ローパス

OpenCvで、リアルタイムで、Video を200×200にスライスして、DCT→ローパス→IDCT を行ってみた。

左から、オリジナル、DCT、DCTの高周波成分をカット( 情報量はオリジナルの 1/100 )、IDCTで逆変換結果。

OpenCVで、動き検出

【爆速】OpenCVで複数の物体検出 -ラズパイ- を参考に、物体認識を試してみた。

単一オブジェクトの動き検出

KMeans を使って複数オブジェクトを認識をしてみたところ、ノイズがあると重心がうまく分離できず、Bounding Box が大きくずれてしまう。また、同一の物体であっても、複数のクラスターから構成されてしまうという問題点があった。

次に、オブジェクト輪郭検出 を参考に 複数のオブジェクトの動き認識してみた。 動いていないと認識できない、物体の特定ができない、といった問題があり、 正確ではないけれど、ある程度認識することができる。

drawContours だけで輪郭を描画できる。

OpenCv で動きを検出したらビデオに出力

動きを検出したら、ビデオき書き出す

OpenCvで timelapse

既存のビデオファイルから、タイムラプスを作成する方法

fourcc : Windows 10 の場合、次の動作を確認した。

フォーマットfourcc
aviDIVX
aviDIVX
wmvWMV1
wmvWNV2
mp4MP4V

OpenCV でキャプチャーしたビデオをファイルに出力

OpenCV でキャプチャーしたビデオをファイルに出力

参考
https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_gui/py_video_display/py_video_display.html

OpenCV で背景差分

フレームを直接操作した場合

Numpy で書いてみた

BackgroundSubtractorMOG でもっと簡単に書ける

背景差分
bgsegm は、Background-Foreground Segmentation Methods の略

numpy で2次元配列化からスライス

実行結果
オリジナル配列
[[ 0 1 2 3 4 5 6 7]
[ 8 9 10 11 12 13 14 15]
[16 17 18 19 20 21 22 23]
[24 25 26 27 28 29 30 31]
[32 33 34 35 36 37 38 39]
[40 41 42 43 44 45 46 47]
[48 49 50 51 52 53 54 55]
[56 57 58 59 60 61 62 63]]

print(a[0:4, 0:4])
[[ 0 1 2 3]
[ 8 9 10 11]
[16 17 18 19]
[24 25 26 27]]

print(a[4:8, 0:4])
[[32 33 34 35]
[40 41 42 43]
[48 49 50 51]
[56 57 58 59]]

print(a[0:4, 4:8])
[[ 4 5 6 7]
[12 13 14 15]
[20 21 22 23]
[28 29 30 31]]

print(a[4:8, 4:8])
[[36 37 38 39]
[44 45 46 47]
[52 53 54 55]
[60 61 62 63]]

ビデオから、部分画像をスライス

opencv Tutorial 顔認識

opencv Tutorial Cascade Classifier