teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

V4Lの代替

2023/08/06 22:11

投稿

退会済みユーザー
answer CHANGED
@@ -4,4 +4,17 @@
4
4
  対策はカメラのcapの部分を以下に差し替えてください。
5
5
  ```Python3
6
6
  cap = cv2.VideoCapture(0, cv2.CAP_V4L2)
7
- ```
7
+ ```
8
+
9
+ 追記
10
+ ---
11
+ たぶんですが、
12
+ - OpenCVが非MACの環境でOpenCVがコンパイルされたせいで、WindowsやLinuxの標準バックエンドが既定でロードされてしまっていた(今回の質問の件)
13
+ - そこに私が提案したV4LもLinux用なのでMACのバックエンドとして適さなかった(カメラが開けませんでした、の件)
14
+
15
+ のような気がしています。そこで、気になってリファレンスを少し調べました。すると、第二引数のV4Lの部分を[ほかにも](https://docs.opencv.org/3.4/d4/d15/group__videoio__flags__base.html#gga023786be1ee68a9105bf2e48c700294dacf10e9692c4166f74de62b7d00c377d0)変えられるらしいことがわかりました。
16
+
17
+ MACでどれを指定すればよいかはわかりませんが、「GSTREAMERでもV4Lでもないバックエンドの何か(?)」であればうまくいきそうな気がします。
18
+
19
+ Qiitaの[オオタニシンヤさんの記事](https://qiita.com/shinya_ohtani/items/9b38252b80bbbb7a7201)を参考にすると、上述の`cv2.CAP_V4L2`の部分を、`cv2.CAP_FFMPEG`や`cv2.CAP_AVFOUNDATION`に差し替えるとうまくいきそうです。
20
+

1

 

2023/08/06 11:10

投稿

退会済みユーザー
answer CHANGED
@@ -1,5 +1,5 @@
1
1
  多分gstremaerが悪さをしています。マックでどうかは分かりませんが、Linuxだと代わりにV4L(video for Linux)経由でカメラにアクセスするとうまくいく可能性が高いです。
2
- ※経験上gstreamerを入れ直したりあれこれしてもうまくいかないです。大人しくG4’sを試した方がうまく行きます。
2
+ ※経験上gstreamerを入れ直したりあれこれしてもうまくいかないです。大人しくv4lを試した方がうまく行きます。
3
3
 
4
4
  対策はカメラのcapの部分を以下に差し替えてください。
5
5
  ```Python3