Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/takamin/stereoblockmatch
OpenCV StereoSGBM Realtime Demonstration
https://github.com/takamin/stereoblockmatch
Last synced: 25 days ago
JSON representation
OpenCV StereoSGBM Realtime Demonstration
- Host: GitHub
- URL: https://github.com/takamin/stereoblockmatch
- Owner: takamin
- Created: 2014-11-11T14:56:49.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2015-11-03T08:26:49.000Z (about 9 years ago)
- Last Synced: 2024-04-14T22:12:58.004Z (7 months ago)
- Language: C++
- Homepage: http://takamints.hatenablog.jp/entry/result-of-opencv-stereo-block-matching-with-calibrated-cameras
- Size: 230 KB
- Stars: 2
- Watchers: 3
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# StereoBlockMatch
2台のWEBカメラの画像で、ステレオマッチングを行い、結果をリアルタイム表示するプログラム。
生の結果画像に加え、過去数フレームの平均画像も表示します。ステレオマッチングには OpenCV の StereoSGBM を使用。
[![StereoBlockMatch](http://cdn-ak.f.st-hatena.com/images/fotolife/t/takamints/20151013/20151013115218.png)](http://takamints.hatenablog.jp/entry/result-of-opencv-stereo-block-matching-with-calibrated-cameras)
## 実行モジュール
1. StereoBlockMatch - カメラ2台のステレオマッチング結果をリアルタイム表示
2. stereoShot - ステレオカメラのキャリブレーション用画像保存ツール### 1. StereoBlockMatch
```
$ StereoBlockMatch [-R (=1)] [-L (=2)] [-C ]
```#### オプション
* `-R ` - 右側カメラのデバイスインデックス。既定値は1。0以上の数値を指定します。
* `-L `- 左側カメラのデバイスインデックス。既定値は2。0以上の数値を指定します。
* `-C ` - stereoShotを使用して保存した、キャリブレーション用の画像ファイル群のプレフィックス(ファイル名の先頭文字列)を指定します。このオプションを指定しなければキャリブレーションは行われません。既定値はありません。ファイル名のフォーマットについては、stereoShotの説明を参照してください。以下の例では、デバイスインデックスを、右を2、左を1に変更しています。
`$ ./StereoBlockMatch -R2 -L1`
#### 操作
実行すると、左右のカメラ画像と視差画像、そして視差画像の移動平均画像を表示するウィンドウが開きます。キャリブレーションは、画面表示の前に行われます。
終了するには、[Shift]+[Q]を押します。
### 2. stereoShot
```
$ stereoShot [-R (=1)] [-L (=2)] [-C =("cal")]
```#### オプション
* `-R ` - 右側カメラのデバイスインデックス。既定値は1。0以上の数値を指定します。
* `-L `- 左側カメラのデバイスインデックス。既定値は2。0以上の数値を指定します。
* `-C ` - キャリブレーション用の画像ファイルのファイル名先頭文字を指定します。既定値は"cal"。保存されるファイル名は、`__.jpg`。calPrefixには、ディレクトリ名を含んで良い。seqnoは0から始まる3桁の数字、RLは、'R'で右のカメラ画像をあらわし、'L'は左です。#### 操作
実行すると、左右のカメラ画像が表示されます。キャリブレーションに必要な11x9のチェスボード画像を両方のカメラに移すと、その内部のコーナーを検出して画面に表示します。両方の画像に検出されたコーナーが表示されているときに、スペースバーを押すと、左右の画像に連番をつけて保存します。
終了するには、[Shift]+[Q]を押します。
## ビルド・実行に必要なもの
* USBカメラ2台(同機種が望ましい)
* OpenCV 2.4
* cmake 2.8 / 3.3
* [cvImagePipeline](https://github.com/takamin/cvImagePipeline) (次項参照)
* opencv 2.4 ※cmakeのfind\_packageで検索されます。## ビルド
### cvImagePipeline について
OpenCVを利用した画像処理ライブラリ [cvImagePipeline](https://github.com/takamin/cvImagePipeline)
を使用しています。このリポジトリに Gitサブモジュールとして追加していますので、このリポジトリを clone したのち、
`git submodule update cvImagePipeline` で更新してください。### ビルド方法
ビルドはcmakeで行います。
リポジトリのルートディレクトリで以下を実行。```
mkdir build
cd build
cmake ..
```### 出力フォルダ
Windowsの場合、cmakeが終了した後、出力されたソリューションファイルを Visual C++ で開き、
__Release版でINSTALLターゲットをビルド__してください。
おそらくDebug版では動作しません。実行モジュールは、
プログラムフォルダ
(`C:\\Program Files` または、
`C:\\Program Files (x86)`)の
`StereoBlockMatch`へ出力されています。## 動作確認した環境
動作確認は以下の環境で行いました。
* Windows 7 (32bit) SP1
* Microsoft Visual C++ 2010 Express
* Microsoft Visual Studio Community 2015 Visual C++ 2015
* 百均で買った2台のUSBカメラ
* OpenCV 2.4.10
* cvImagePipeline 1.0