LoginSignup
8
6

More than 5 years have passed since last update.

MacのOpenCVからUSBカメラを製品名で区別

Posted at

経緯

PythonのOpenCVを利用して複数台のカメラが乗っている場合、利用したいカメラを指定したかった。
OpenCVのVideoCaptureはindexの数値を指定するしか方法がない。そのindexが
USBの付ける位置によって毎回変わってしまうという糞仕様だった。せめて名前か何かユニークなもので判別して自動で利用するカメラを選びたかった人生。

手法

system_profiler でWebカメラの情報を取って、部分一致した文字列で雑に使用するカメラを指定出来るようにした。

import sys
import subprocess

def get_camera_name(camera_name):
    # カメラリストの取得
    cmd = 'system_profiler SPCameraDataType | grep "^    [^ ]" | sed "s/    //" | sed "s/://" '
    res = subprocess.run(cmd, stdout=subprocess.PIPE, shell=True)
    # 出力結果の加工
    ret = res.stdout.decode('utf-8')
    camera_list = list(filter(lambda a: a != "", ret.split('\n')))
    print(camera_list)

    # 指定カメラの取得
    for index, row in enumerate(camera_list):
        if row.find(camera_name) != -1: 
          return index

    raise Exception('指定カメラなし')
>>> get_camera_name('HD')
['FaceTime HD Camera', 'USB_Camera']
0
>>> get_camera_name('USB')
['FaceTime HD Camera', 'USB_Camera']
1

参考

8
6
2

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
8
6