OpenCV でステレオマッチング(OpenCV,Python を使用)
【目次】
【サイト内の OpenCV 関連ページ】
- OpenCV について [PDF] , [パワーポイント]
- OpenCV のインストール,画像表示を行う C++ プログラムの実行手順: 別ページ »で説明
- OpenCVとPythonを活用した画像・ビデオ処理プログラム: 別ページ »にまとめ
- OpenCV 4 の C/C++ プログラム: 別ページ »にまとめている.
【OpenCV の公式情報】
- OpenCV の公式ページ: https://opencv.org
- GitHub の OpenCV のページ: https://github.com/opencv/opencv/releases
前準備
Python のインストール(Windows,Ubuntu 上)
Python 3.10 のインストール(Windows 上)
Pythonは,プログラミング言語の1つ.
【手順】
- Windows で,コマンドプロンプトを管理者として実行
コマンドプロンプトを管理者として実行: 別ページ »で説明
- 次のコマンドを実行
次のコマンドは,Python ランチャーとPython 3.10をインストールする.
【関連する外部ページ】
- Python の公式ページ: https://www.python.org/
【サイト内の関連ページ】
【関連項目】 Python
- Windows での Python 3.10,関連パッケージ,Python 開発環境のインストール(winget を使用しないインストール): 別ページ »で説明
- Ubuntu では,システム Pythonを使うことができる.Python3 開発用ファイル,pip, setuptools のインストール: 別ページ »で説明
【サイト内の関連ページ】
- Python のまとめ: 別ページ »にまとめ
- Google Colaboratory の使い方など: 別ページ »で説明
【関連する外部ページ】 Python の公式ページ: https://www.python.org/
Ubuntu のシステム Python
Ubuntu では,システム Pythonを使用できる.Python 用 opencv-python, numpy のインストール
Windows でのインストール
- Windows で,コマンドプロンプトを管理者として実行
コマンドプロンプトを管理者として実行: 別ページ »で説明
- インストールの実行
次のコマンドは,旧バージョンのものを削除し,Python 用 opencv-python のインストールを行う. 「python -c "import sys, cv2; print(f'Python version: {sys.version}\nOpenCV version: {cv2.__version__}')"」はインストールできたかの確認のため,バージョンを表示している.
python -m pip uninstall -y opencv-python python -m pip uninstall -y opencv-python-headless python -m pip uninstall -y opencv-contrib-python python -m pip install -U opencv-python opencv-contrib-python numpy python -c "import sys, cv2; print(f'Python version: {sys.version}\nOpenCV version: {cv2.__version__}')"
Ubuntu でのインストール
- インストールの実行
次のコマンドは,Python 用 opencv-python のインストールを行う. 「python3 -c "import sys, cv2; print(f'Python version: {sys.version}\nOpenCV version: {cv2.__version__}')"」はインストールできたかの確認のため,バージョンを表示している.
sudo apt install -y python3-opencv python3-numpy python3 -c "import sys, cv2; print(f'Python version: {sys.version}\nOpenCV version: {cv2.__version__}')"
画像ファイル aloeL.jpg, home.jpg のダウンロード
https://github.com/opencv/opencv/tree/master/samples/data で公開されている aloeL.jpg, aloeR.jpg を使用する(謝辞:画像の作者に感謝します)
- Windows の場合
次のコマンドを実行.
cd %LOCALAPPDATA% curl -O https://raw.githubusercontent.com/opencv/opencv/master/samples/data/aloeL.jpg curl -O https://raw.githubusercontent.com/opencv/opencv/master/samples/data/aloeR.jpg
- Ubuntu, RaspberryPi の場合
次のコマンドを実行.
sudo mkdir -p /usr/local/image cd /usr/local/image sudo chown -R $USER . curl -O https://raw.githubusercontent.com/opencv/opencv/master/samples/data/aloeL.jpg curl -O https://raw.githubusercontent.com/opencv/opencv/master/samples/data/aloeR.jpg
- Google Colaboratory の場合
次のコマンドを実行.
curl -O https://raw.githubusercontent.com/opencv/opencv/master/samples/data/aloeL.jpg curl -O https://raw.githubusercontent.com/opencv/opencv/master/samples/data/aloeR.jpg
ステレオマッチングによる距離画像の生成
【サイト内の関連ページ】 ステレオ画像
- Windows,
Ubuntu, RaspberryPi の場合
jupyter qtconsole
- Python プログラムの実行
Ubuntu, RaspberryPi のときは,「IMROOT=os.environ['LOCALAPPDATA'] + '/'」の行を,「IMROOT="/usr/local/image/"」のように書き換える. Google Colaboratory のときは,「IMROOT=os.environ['LOCALAPPDATA'] + '/'」の行を,「IMROOT="./"」のように書き換える.
import os import numpy as np import cv2 %matplotlib inline import matplotlib.pyplot as plt import warnings warnings.filterwarnings('ignore') # Suppress Matplotlib warnings IMROOT=os.environ['LOCALAPPDATA'] + '/' mono0 = cv2.cvtColor( cv2.imread(IMROOT + "aloeL.jpg"), cv2.COLOR_BGR2GRAY ) mono1 = cv2.cvtColor( cv2.imread(IMROOT + "aloeR.jpg"), cv2.COLOR_BGR2GRAY ) stereo = cv2.StereoBM_create(blockSize= 15, numDisparities=64) disparity = stereo.compute(mono0, mono1) map = ( disparity - np.min(disparity) ) / ( np.max(disparity) - np.min(disparity) ) blur = cv2.GaussianBlur(map, (15, 15), 5) plt.style.use('default') plt.imshow(blur) plt.show()