サイト内の関連ページ
前準備として,Pythonのインストールが終わっていること.
Python の URL: http://www.python.org/
インストール手順の詳細は: 別ページで説明している.
コマンドプロンプトを管理者として実行し,次のコマンドを実行.
python -m pip install -U pip setuptools python -m pip install -U jupyterlab jupyter jupyter-console jupytext nteract_on_jupyter spyder
システム Python を使用(インストール操作は不要)
端末で,次のコマンドを実行.
sudo apt -y install python3-dev python3-pip python3-setuptools python3-venv sudo pip3 uninstall ptyprocess sniffio terminado tornado jupyterlab jupyter jupyter-console jupytext nteract_on_jupyter spyder sudo apt -y install jupyter jupyter-qtconsole spyder3 sudo apt -y install python3-ptyprocess python3-sniffio python3-terminado python3-tornado sudo pip3 install -U jupyterlab nteract_on_jupyter
※ Windows では「python」,Ubuntu では「sudo python3 -m pip」
python -m pip install -U opencv-python
パソコン接続できるビデオカメラ 2台を準備し,パソコンに接続しておく.
jupyter qtconsole
Python プログラムを動かすために, pythonやpython3などのコマンドを使う. あるいは, 開発環境や Python コンソール(Jupyter Qt Console,spyder,PyCharm,PyScripter など)の利用も便利である.
※ 「jupyter qtconsole」を入れたのに,jupyter qtconsole が起動しない という場合には,次の操作で,インストールを行ってから,もう一度試してみる.
※ Windows では「python」,Ubuntu では「sudo python3 -m pip」
python -m pip install -U jupyterlab jupyter jupyter-console jupytext spyder
import cv2 import numpy as np v0 = cv2.VideoCapture(0) v1 = cv2.VideoCapture(1) while( ( v0.isOpened() ) and ( v1.isOpened() ) ): r0, bgr0 = v0.read() if ( r0 == False ): break r1, bgr1 = v1.read() if ( r1 == False ): break cv2.imshow("0", bgr0) cv2.imshow("1", bgr1) if cv2.waitKey(1) & 0xFF == ord('q'): break v0.release() v1.release() cv2.destroyAllWindows()
※ 止めたいとき,右上の「x」をクリックしない.画面の中をクリックしてから,「q」のキーを押して閉じる
ステレオ画像のうち1枚を、平行移動による位置合わせ
import cv2 import numpy as np v0 = cv2.VideoCapture(0) v1 = cv2.VideoCapture(1) while( ( v0.isOpened() ) and ( v1.isOpened() ) ): r0, bgr0 = v0.read() if ( r0 == False ): break r1, bgr1 = v1.read() if ( r1 == False ): break mono0 = cv2.cvtColor(bgr0, cv2.COLOR_BGR2GRAY) mono1 = cv2.cvtColor(bgr1, cv2.COLOR_BGR2GRAY) f0 = np.array( mono0, dtype='float32') f1 = np.array( mono1, dtype='float32') dxdy, response = cv2.phaseCorrelate(f0, f1) print(dxdy[0], dxdy[1]) bgr0after = cv2.warpAffine(bgr0, np.float32([[1, 0, dxdy[0]], [0, 1, dxdy[1]]]), (f0.shape[1], f0.shape[0])) cv2.imshow("bgr0", bgr0) cv2.imshow("bgr1", bgr1) cv2.imshow("bgr0after", bgr0after) if cv2.waitKey(1) & 0xFF == ord('q'): break v0.release() v1.release() cv2.destroyAllWindows()
import cv2 import numpy as np v0 = cv2.VideoCapture(0) v1 = cv2.VideoCapture(1) while( ( v0.isOpened() ) and ( v1.isOpened() ) ): r0, bgr0 = v0.read() if ( r0 == False ): break r1, bgr1 = v1.read() if ( r1 == False ): break mono0 = cv2.cvtColor(bgr0, cv2.COLOR_BGR2GRAY) mono1 = cv2.cvtColor(bgr1, cv2.COLOR_BGR2GRAY) f0 = np.array( mono0, dtype='float32') f1 = np.array( mono1, dtype='float32') dxdy, response = cv2.phaseCorrelate(f0, f1) print(dxdy[0], dxdy[1]) bgr0after = cv2.warpAffine(bgr0, np.float32([[1, 0, dxdy[0]], [0, 1, dxdy[1]]]), (bgr0.shape[1], bgr0.shape[0])) window_size = 3 min_disp = 16 num_disp = 112-min_disp stereo = cv2.StereoSGBM_create(minDisparity = min_disp, numDisparities = num_disp, blockSize = 8, P1 = 8*3*window_size**2, P2 = 32*3*window_size**2, disp12MaxDiff = 1, uniquenessRatio = 10, speckleWindowSize = 200, speckleRange = 1 ) disparity = stereo.compute(bgr0after, bgr1).astype(np.float32) / 16.0 cv2.imshow("bgr0", bgr0) cv2.imshow("bgr1", bgr1) cv2.imshow("bgr0after", bgr0after) cv2.imshow('disparity', (disparity-min_disp)/num_disp) if cv2.waitKey(1) & 0xFF == ord('q'): break v0.release() v1.release() cv2.destroyAllWindows()
※ 止めたいとき,右上の「x」をクリックしない.画面の中をクリックしてから,「q」のキーを押して閉じる