ステレオマッチングによりステレオ画像から距離画像を求める(OpenCV,Python を使用)
次で公開されているプログラムを参考に、ステレオ画像から距離画像を求める
https://github.com/opencv/opencv/blob/master/samples/python/stereo_match.py
【サイト内の関連ページ】
前準備
Python のインストールと必要なPythonライブラリのインストール(Windows上)
- Python のインストール
注:既にPython(バージョン3.12を推奨)がインストール済みの場合は,この手順は不要である.
winget(Windowsパッケージマネージャー)を使用してインストールを行う
- 必要なPythonライブラリのインストール
【関連する外部ページ】
【サイト内の関連ページ】
このページで説明のために使用する画像
- まず、C:\image のような作業用のディレクトリ(フォルダ)を作る
- 次の Web ページを開く
- aloeL.jpg, alorR.jpg の2つをダウンロードし、C:\image の下に保存
ステレオマッチングによりステレオ画像から距離画像を求める
- Python プログラムの実行
- 次を実行
import cv2 import numpy as np imgL = cv2.imread("C:/image/aloeL.jpg") imgR = cv2.imread("C:/image/aloeR.jpg") # disparity range is tuned for 'aloe' image pair window_size = 3 min_disp = 16 num_disp = 112-min_disp stereo = cv2.StereoSGBM_create(minDisparity = min_disp, numDisparities = num_disp, blockSize = 16, P1 = 8*3*window_size**2, P2 = 32*3*window_size**2, disp12MaxDiff = 1, uniquenessRatio = 10, speckleWindowSize = 100, speckleRange = 32 ) print('computing disparity...') disparity = stereo.compute(imgL, imgR).astype(np.float32) / 16.0 cv2.imshow('disparity', (disparity-min_disp)/num_disp) cv2.waitKey(0) cv2.destroyAllWindows()
画像が表示されるので確認. このあと,ウインドウの右上の「x」をクリックしない.画面の中をクリックしてから,何かのキーを押して閉じる