ベイジアン研究所

プログラミング言語(アルゴリズム的な話が中心)やガジェットの紹介をしています。時々心理学の話も。

【opencv-python】ステレオ画像からの距離計測

1. 記事の目的
参考文献[2]のステレオ画像からの距離計測において、opencv-python 4.4.0に対応していなかったので、対応するコードを提供する。具体的には、createStereoBM()と言う関数をStereoBM_create()に変更すれば良い。

2. 実行確認済み環境
Mac OS Catalina 10.15.7
Python 3.8.5
opencv-python 4.4.0.46
numpy 1.19.1
matplotlib 3.3.1

3. 実装コード
まず、図1を"tsukuba_l.jpg"、図2を"tsukuba_r.jpg"と言う名前で、以下のコードを書いたpythonファイルと同じ場所に保存する(参考文献[2]からも入手できる)。

f:id:camelsan:20201226114604p:plain
図1 tsukuba_l.jpg

f:id:camelsan:20201226114643p:plain
図2 tsukuba_r.jpg
実装コードを記す。

import numpy as np
import cv2
from matplotlib import pyplot as plt

imgL = cv2.imread('./sukuba_l.png',0)
imgR = cv2.imread('./tsukuba_r.png',0)

stereo = cv2.StereoBM_create(numDisparities=16, blockSize=15)
disparity = stereo.compute(imgL,imgR)
plt.imshow(disparity, 'gray')
plt.show()

pythonファイルを"stereo.py"と言う名前にした場合、次のコマンドで実行が可能である。

python3 stereo.py

4. 実行結果
次の画像が出力される。

f:id:camelsan:20201226114835p:plain
図3 出力結果

5. 参考文献
[1] OpenCV-Pythonチュートリアル/カメラキャリブレーションと3次元復元/ステレオ画像からの距離計測
ステレオ画像から距離計測 — OpenCV-Python Tutorials 1 documentation
[2] OpenCV github
File Finder · GitHub