1
2

More than 1 year has passed since last update.

ブラウザで再生できるmp4を作るためにOpenCVをaptから入れたらPylanceに認識されなくなった件

Last updated at Posted at 2023-02-24

妙にハマったので覚書です。

MPV4で動画を生成するとブラウザで再生できない

OpenCVでMP4を生成するとき、下記のようにコーデックをMPV4にしてしまうとブラウザなどで再生できません。

import cv2

fourcc = cv2.VideoWriter_fourcc(*"mp4v")
writer = cv2.VideoWriter("output.mp4", fourcc, 5.0, (640, 480))

cv2.VideoWriter_fourcc(*"avc1")1 を指定することでH.264でエンコードでき、ブラウザ等で再生できます。

pipのopencv-pythonにはH.264コーデックがない

pipからインストールしたopencv-pythonにはライセンス上の理由によってH.264コーデックが同梱されていません。

Windowsなら https://github.com/cisco/openh264/releases からDLLを取ってきてpythonフォルダにでも入れておけばいいですが、Linuxだとopencvをビルドしたりする必要があります。

Debian系なら apt install python3-opencv でコーデックの入ったopencvが使えます。
ちなみにaptとpip両方からインストールすると自分の環境ではpipが優先されてしまいコーデック無し状態になりました。

Pylanceがaptのpython3-opencvを認識しない

VSCodeのPylanceがなぜかcv2を認識しなくなりました。
pipからインストールしたときは普通に認識するのになぜ……?
型はどうせ組み込みのstub見るだけなのに……

image.png

pipとaptのインストール状態の違いについて確認してみたところ、次のようになっていました。

pip: /usr/local/lib/python3.8/dist-packages/cv2/__init__.py
apt: /usr/lib/python3/dist-packages/cv2.cpython-38-x86_64-linux-gnu.so

そこで試しに /usr/lib/python3/dist-packages/cv2 に空ディレクトリを生成してみたところ、無事Pylanceにcv2をインストール済みと認識させることができました。

sudo mkdir /usr/lib/python3/dist-packages/cv2

よかったーヽ(=´▽`=)ノ

参考

  1. h264, x264avc1 にフォールバックされます。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2