回答編集履歴

7

 

2023/02/11 00:37

投稿

退会済みユーザー
test CHANGED
@@ -13,6 +13,6 @@
13
13
 
14
14
  正しくUSBカメラから画像を取得する(転ばぬ先の杖)
15
15
  ---
16
- USBデバイスは使っている/使っていないを**問わず**接続するだけでCPUの負荷が上がります。さらに、接続中のカメラの解像度が高ければ高いだけ、OpenCVで`cap = cv2.VideoCapture(0)`のような処理をしているかどうかを**問わず**USBの帯域を食いつぶします。何が起きるかというと、カメラの解像度にも寄りますが、複数のUSBカメラを接続すると画像が乱れることが、最悪の場合USBカメラから画像を取得することが原因でフリーズすることがあります。
16
+ 使っている/使っていないを問わず**USBデバイスは接続するだけでCPUの負荷が上がります**。さらに、OpenCVで`cap = cv2.VideoCapture(0)`のような処理をしているかどうかを問わず**接続中のカメラの解像度が高ければ高いだけUSBの帯域を食いつぶします**。何が起きるかというと、カメラの解像度にも寄りますが、複数のUSBカメラを接続すると画像が乱れることが、最悪の場合USBカメラから画像を取得することが原因でフリーズすることがあります。
17
17
 
18
18
  こういう時には、USBカメラの解像度を落とす対応をしてください。

6

 

2023/02/11 00:35

投稿

退会済みユーザー
test CHANGED
@@ -5,8 +5,7 @@
5
5
  - [`v4l2-ctl --list-devices`のようなコマンド](https://askubuntu.com/a/848390)をPythonから走らせて、返り値を拾うか、
6
6
  - [`ls -ltrh /dev/video*`のようなコマンド](https://askubuntu.com/a/348842)をPythonから走らせて、返り値を拾うか、
7
7
  のようにするのが良いと思います。またこれらのように、Pythonから外部のコマンドを走らせるには[subprocess](https://docs.python.org/ja/3/library/subprocess.html)から行けます。
8
- [作例を公開している人のURL](https://dev.classmethod.jp/articles/raspberry_pi_v4l2_ctl_get_resorution_from_webcam/)を見つけました。
8
+ [作例を公開している人のURL](https://dev.classmethod.jp/articles/raspberry_pi_v4l2_ctl_get_resorution_from_webcam/)を見つけました。対象ファイルは「cam_list_test.py」です。(さかじさん@classmethod.jp )
9
- 対象ファイルは「cam_list_test.py」です。(さかじさん@classmethod.jp )
10
9
 
11
10
 
12
11
  ※ただし、**単にパスが分かればいいという話では済まない**こともあります。というのも、**REALSENSEのような変態カメラをOpenCV経由でアクセス**すると、一台のカメラに3つのデバイス(BGRカメラ...OpenCVからはBGRのため、赤外線カメラ、LiDARの深度)のようになっていることがあるためです。こういう時には、パスの情報を元にカメラがどういう素性のカメラか調べるコマンドも併せて走らせて確認する必要があります。例えば、` v4l2-ctl --device=/dev/video0 --all`のようにすると、カメラの詳しい素性を知ることができるため、この素性を元に狙ったカメラ情報が得られた場合にはBGRカメラとしてOpenCVからアクセスできます。

5

 

2023/02/11 00:35

投稿

退会済みユーザー
test CHANGED
@@ -5,8 +5,8 @@
5
5
  - [`v4l2-ctl --list-devices`のようなコマンド](https://askubuntu.com/a/848390)をPythonから走らせて、返り値を拾うか、
6
6
  - [`ls -ltrh /dev/video*`のようなコマンド](https://askubuntu.com/a/348842)をPythonから走らせて、返り値を拾うか、
7
7
  のようにするのが良いと思います。またこれらのように、Pythonから外部のコマンドを走らせるには[subprocess](https://docs.python.org/ja/3/library/subprocess.html)から行けます。
8
-
9
- [作例を公開している人のURL](https://dev.classmethod.jp/articles/raspberry_pi_v4l2_ctl_get_resorution_from_webcam/)を見つけました。対象ファイルは「cam_list_test.py」です。(さかじさん@classmethod.jp )
8
+ [作例を公開している人のURL](https://dev.classmethod.jp/articles/raspberry_pi_v4l2_ctl_get_resorution_from_webcam/)を見つけました。
9
+ 対象ファイルは「cam_list_test.py」です。(さかじさん@classmethod.jp )
10
10
 
11
11
 
12
12
  ※ただし、**単にパスが分かればいいという話では済まない**こともあります。というのも、**REALSENSEのような変態カメラをOpenCV経由でアクセス**すると、一台のカメラに3つのデバイス(BGRカメラ...OpenCVからはBGRのため、赤外線カメラ、LiDARの深度)のようになっていることがあるためです。こういう時には、パスの情報を元にカメラがどういう素性のカメラか調べるコマンドも併せて走らせて確認する必要があります。例えば、` v4l2-ctl --device=/dev/video0 --all`のようにすると、カメラの詳しい素性を知ることができるため、この素性を元に狙ったカメラ情報が得られた場合にはBGRカメラとしてOpenCVからアクセスできます。

4

 

2023/02/11 00:34

投稿

退会済みユーザー
test CHANGED
@@ -6,7 +6,11 @@
6
6
  - [`ls -ltrh /dev/video*`のようなコマンド](https://askubuntu.com/a/348842)をPythonから走らせて、返り値を拾うか、
7
7
  のようにするのが良いと思います。またこれらのように、Pythonから外部のコマンドを走らせるには[subprocess](https://docs.python.org/ja/3/library/subprocess.html)から行けます。
8
8
 
9
+ [作例を公開している人のURL](https://dev.classmethod.jp/articles/raspberry_pi_v4l2_ctl_get_resorution_from_webcam/)を見つけました。対象ファイルは「cam_list_test.py」です。(さかじさん@classmethod.jp )
10
+
11
+
9
12
  ※ただし、**単にパスが分かればいいという話では済まない**こともあります。というのも、**REALSENSEのような変態カメラをOpenCV経由でアクセス**すると、一台のカメラに3つのデバイス(BGRカメラ...OpenCVからはBGRのため、赤外線カメラ、LiDARの深度)のようになっていることがあるためです。こういう時には、パスの情報を元にカメラがどういう素性のカメラか調べるコマンドも併せて走らせて確認する必要があります。例えば、` v4l2-ctl --device=/dev/video0 --all`のようにすると、カメラの詳しい素性を知ることができるため、この素性を元に狙ったカメラ情報が得られた場合にはBGRカメラとしてOpenCVからアクセスできます。
13
+
10
14
 
11
15
  正しくUSBカメラから画像を取得する(転ばぬ先の杖)
12
16
  ---

3

 

2023/02/11 00:30

投稿

退会済みユーザー
test CHANGED
@@ -1,14 +1,12 @@
1
1
  Python側から正しくUSBカメラを調べる
2
2
  ---
3
- たしかPython単体だと(USBカメラを抜き差しするたびに番号が不定になるような具合で)「どのパスのカメラが生きているか(正確に接続されてデバイスとして認識しているか)」を**スマートに探る方法**はなかったように思います。
3
+ かPython単体だと(USBカメラを抜き差しするたびに番号が不定になるような具合で)「どのパスのカメラが生きているか(正確に接続されてデバイスとして認識しているか)」を**スマートに探る方法**はなかったように思います。
4
4
  なので、
5
5
  - [`v4l2-ctl --list-devices`のようなコマンド](https://askubuntu.com/a/848390)をPythonから走らせて、返り値を拾うか、
6
6
  - [`ls -ltrh /dev/video*`のようなコマンド](https://askubuntu.com/a/348842)をPythonから走らせて、返り値を拾うか、
7
- のが良いと思います。
7
+ ようにするのが良いと思います。またこれらのように、Pythonから外部のコマンドを走らせるには[subprocess](https://docs.python.org/ja/3/library/subprocess.html)から行けます。
8
8
 
9
- ※ただし、**REALSENSEのような変態カメラをOpenCV経由でアクセス**すると、一台のカメラに3つのデバイス(BGRカメラ、赤外線カメラ、LiDARの深度)のようになっていることがあるため、**単にパスが分かればいいという話は済まない**こともあります。こういう時には、パスの情報を元にカメラがどういう素性のカメラか調べるコマンドも併せて走らせて確認する必要があります。例えば、` v4l2-ctl --device=/dev/video0 --all`のようにしてです。
10
-
11
- また、Pythonから外部のコマンドを走らせるには[subprocess](https://docs.python.org/ja/3/library/subprocess.html)から行けます。
9
+ ※ただし、**単にパスが分かればいいという話では済まない**こともあります。というのも、**REALSENSEのような変態カメラをOpenCV経由でアクセス**すると、一台のカメラに3つのデバイス(BGRカメラ...OpenCVからはBGRのため、赤外線カメラ、LiDARの深度)のようになっていることがあるためです。こういう時には、パスの情報を元にカメラがどういう素性のカメラか調べるコマンドも併せて走らせて確認する必要があります。例えば、` v4l2-ctl --device=/dev/video0 --all`のようにすると、カメラの詳い素性を知ることができるため、この素性を元に狙ったカメラ情報が得られた場合にはBGRカメラとしOpenCVからアクセスきます。
12
10
 
13
11
  正しくUSBカメラから画像を取得する(転ばぬ先の杖)
14
12
  ---

2

 

2023/02/11 00:28

投稿

退会済みユーザー
test CHANGED
@@ -1,3 +1,5 @@
1
+ Python側から正しくUSBカメラを調べる
2
+ ---
1
3
  たしかPython単体だと(USBカメラを抜き差しするたびに番号が不定になるような具合で)「どのパスのカメラが生きているか(正確に接続されてデバイスとして認識しているか)」を**スマートに探る方法**はなかったように思います。
2
4
  なので、
3
5
  - [`v4l2-ctl --list-devices`のようなコマンド](https://askubuntu.com/a/848390)をPythonから走らせて、返り値を拾うか、
@@ -8,3 +10,8 @@
8
10
 
9
11
  また、Pythonから外部のコマンドを走らせるには[subprocess](https://docs.python.org/ja/3/library/subprocess.html)から行けます。
10
12
 
13
+ 正しくUSBカメラから画像を取得する(転ばぬ先の杖)
14
+ ---
15
+ USBデバイスは使っている/使っていないを**問わず**、接続するだけでCPUの負荷が上がります。さらに、接続中のカメラの解像度が高ければ高いだけ、OpenCVで`cap = cv2.VideoCapture(0)`のような処理をしているかどうかを**問わず**USBの帯域を食いつぶします。何が起きるかというと、カメラの解像度にも寄りますが、複数のUSBカメラを接続すると画像が乱れることが、最悪の場合USBカメラから画像を取得することが原因でフリーズすることがあります。
16
+
17
+ こういう時には、USBカメラの解像度を落とす対応をしてください。

1

 

2023/02/11 00:04

投稿

退会済みユーザー
test CHANGED
@@ -1,2 +1,10 @@
1
1
  たしかPython単体だと(USBカメラを抜き差しするたびに番号が不定になるような具合で)「どのパスのカメラが生きているか(正確に接続されてデバイスとして認識しているか)」を**スマートに探る方法**はなかったように思います。
2
+ なので、
3
+ - [`v4l2-ctl --list-devices`のようなコマンド](https://askubuntu.com/a/848390)をPythonから走らせて、返り値を拾うか、
4
+ - [`ls -ltrh /dev/video*`のようなコマンド](https://askubuntu.com/a/348842)をPythonから走らせて、返り値を拾うか、
5
+ のが良いと思います。
2
6
 
7
+ ※ただし、**REALSENSEのような変態カメラをOpenCV経由でアクセス**すると、一台のカメラに3つのデバイス(BGRカメラ、赤外線カメラ、LiDARの深度)のようになっていることがあるため、**単にパスが分かればいいという話では済まない**こともあります。こういう時には、パスの情報を元にカメラがどういう素性のカメラか調べるコマンドも併せて走らせて確認する必要があります。例えば、` v4l2-ctl --device=/dev/video0 --all`のようにして、です。
8
+
9
+ また、Pythonから外部のコマンドを走らせるには[subprocess](https://docs.python.org/ja/3/library/subprocess.html)から行けます。
10
+