Outline

Revision as of 2023-08-08 03:10

 
--- parent: ../docs title: OpenCVで二つのWEBカメラを用いたステレオカメラの実装 date: 2019-06-19 tags: OpenCV, Python, ステレオカメラ, 画像処理 --- ステレオカメラは,空間の深度を測定するのに使われます. 本稿では,二台のウェブカメラを用いてステレオカメラを実装します. ある程度のロバスト性を確保するため,キャリブレーションも行います. 結果,以下のような深度画像を得ることができた. ![結果画像](CURRENT_DIR/Images/StereoCamera/result.jpg) === # ステレオカメラの準備 "LOGICOOL ウェブカム HD画質 120万画素 C270" を二つ用意し, 水平になるように並べて固定します. ![ステレオカメラ](CURRENT_DIR/Images/StereoCamera/stereo-camera.jpg) # ダウンロード 今回使用するpythonスクリプトをダウンロードします. [OpenCV-StereoCamera](https://github.com/ContentsViewer/OpenCV-StereoCamera) # ファイル構成 + OpenCV-StereoCamera + `chessboard` + `chessboard_A.pdf` + `chessboard_B.png` + `lib` + `camera_shutter.py` + `stereo_camera_shutter.py` + `camera_calibrate.py` + `stereo_camera_calibrate.py` + `stereo.py` [環境の用意をしてください::NOTE] ================================= 本稿では, 主にpythonとopenCVを使用していきます. これらの環境を整えてください. ================================= # 左右のカメラデバイス番号の把握 二つのカメラを接続します. `camera_shutter.py`内の上部にある,`CAMERA_DEVISE`を0から始まる番号で適宜変えていき, `camera_shutter.py`を実行します. 実行画面で表示されるカメラ画像から左右のカメラを把握し,対応するデバイス番号を覚えておきます. [`camera_shutter.py`の仕様] =========================== `s`キーでカメラ撮影,`q`キーでプログラム終了. 撮影した画像は,`images`フォルダに格納されます. =========================== # キャリブレーション 二つのカメラの製品は同じでも,個体差があり,同じ姿勢で同じシーンを撮影しても得られる画像は異なります. そのため,二つのカメラにある差を補正するため,キャリブレーションを行います. ディスプレイにダウンロードしたチェスボード画像 (chessboard_A.pdf)を表示させます. ![チェスボード表示](CURRENT_DIR/Images/StereoCamera/chess-Left.jpg) `stereo_camera_shutter.py`を実行し, 様々な角度でチェスボードの写真を撮ります. 撮る角度は,左右,上下,正面,斜めなど様々な角度で撮ります. 撮った写真は,`images`フォルダに蓄積されます. ![撮影画像(左)](CURRENT_DIR/Images/StereoCamera/lookup-Left.jpg) ![撮影画像(右)](CURRENT_DIR/Images/StereoCamera/lookup-Right.jpg) `stereo_camera_calibrate.py`を実行しキャリブレーションを行います. キャリブレーションデータは,ファイル'stereo_calibarate_data.json'に保存されます. # 実行 最後に,`stereo.py`を実行し,デプス画像を得ます. ![結果画像](CURRENT_DIR/Images/StereoCamera/result.jpg)
Retrieved from "https://www.contentsviewer.work/Master/image-processing/stereo-camera-with-web-cameras/article?cmd=history&rev=1691431854"