複数カメラ同時に接続する場合、カメラを区別する必要があります。  
唯一の設備のIDで接続中のカメラを区別すると思います。  
現在日本市販のUSBカメラではそのような機能がありますでしょうか？  
OpenCVなどAPIはPIDとVIDを取得できますが、同じ型式カメラを使ったら、PIDとVID同じになりますので、何かツールやとかドライバーなどでファームウェアの情報（PID/VID/Name）を編集するのはできますでしょうか？  
ご教授お願い致します。
CC BY-SA 4.0
2018-11-22T02:46:09.153
50524
2018-11-22T07:14:03.643
2018-11-22T06:12:34.600
3060
9004
question
camera usb
USBカメラのPIDとVIDはプログラムで変更できますか？
事業用/産業用ならば最初から考慮されているものが多いのではないですか？  
例えば「USBカメラ 複数台 同時」で検索してヒットしたものに、こんなのがあります。

[Q.
1台のパソコンに複数のUSBカメラを接続して使用したい。](http://faq.hozan.co.jp/support/faq/detail?site=ZAWBTM42&category=7&id=141)

> L-835 USBカメラは複数台を同時に、1台のパソコンに接続して使用できます。  
>  接続にはマルチウィンドウ対応のソフトウェアが別途必要です。

同様に [1台のパソコンに何台のUSBカメラを接続できますか？](https://sentech.co.jp/information/faq/old-
faq/usb/hardware-usb/585)

上記装置が使っているかは不明ですが、VID,PIDの他にシリアル番号というデータがあり、接続時にデバイス側情報として、それをホスト側に送っていれば、それも識別情報として使用できます。  
もしくは、どのポートに接続されているか？というあたりの情報も使われているかもしれません。

それらをまとめてWindowsならDevicePathという情報で装置の区別がつきます。  
[DirectShowによる複数USBカメラからキャプ…](https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11110598296)

おそらくそれを使ったであろうソフトがこれです。無償版は未対応だそうですが。  
[CCI-Pro-MR](http://www.cosmosoft.org/CCI-Pro-MR/)  
他にもあります(上記の無償版が未対応の情報はここから)  
[LiveCapture3で複数カメラの記録保存](http://syanai-se.blog.jp/archives/12074767.html)

オープンソースの、さらに独自拡張で良いなら、こういうものが出来ています。  
サポートカメラ機種が限定らしいですが、デバイス番号を基に細かい情報を取得できるようです。  
DevicePathも取得できるようなので、使えるのではないでしょうか。  
[OpenCV: Open Source Computer Vision
Library](https://github.com/econsystems/opencv)

一応Unix系では上記がなくても使えるテクニックがあるようです。  
[Using device name instead of ID in OpenCV method
VideoCapture.open()](https://stackoverflow.com/q/20266743/9014308)

* * *

追記：  
消費者としてはVID,PIDを変更できないのは大前提ですが、本当にUSBカメラを何台も同時に接続するシステムを作成して、さらにそれを何セットも納入するようなプロジェクトだとしたら、スモールでもビジネスとして成り立つかもしれないので、ベンダーとなっても良いわけです。

こんな記事があります。49万円でベンダーになれるようですね。  
[USBのベンダーIDとプロダクトIDの話](https://qiita.com/gpsnmeajp/items/8eb8ecf0541032f6de0e)

デバイスドライバを作るツールなんかもあるので、意外と敷居は低いと思われます。  
[WinDriver USB for
Cypress](https://www.xlsoft.com/jp/products/windriver/products-
wdcypress.html#section10)  
[インターフェイス・ソフトウェア・開発キット・パッケージ](https://jp.silabs.com/products/development-
tools/software/interface#software)
CC BY-SA 4.0
2018-11-22T04:45:26.137
50529
2018-11-22T07:14:03.643
2018-11-22T07:14:03.643
26370
26370
50524
answer
VID は usb.org から分け与えてもらうもの  
PID は各メーカーで割り振るもの  
VID/PID が違うということはドライバ INF ファイルの作り直しになること  
今どきはドライバや CAT ファイルにデジタル署名が必要であること  
から、末端ユーザーが VID/PID を変更することはあり得ません。

カメラの識別方法ですが  
\- IOCTL で製造番号を取得する  
\- どのハブのどのポートにどのデバイスが接続されているかは順番にたどっていくことができる  
\- キャリブレーションの際にそれぞれに違う画像を使って自動認識

ハブとポートを認識、でよければ Windows なら USBVIEW.EXE を調べてみてください。 Linux なら `lsusb` とか。
CC BY-SA 4.0
2018-11-22T04:56:34.597
50530
2018-11-22T04:56:34.597
8589
50524
answer