トップページ -> コンピュータ実習 -> OpenCV と Python によるコンピュータビジョン、画像処理 -> Python + OpenCV で線分検出,点や線の描画、マウス操作
[サイトマップへ], [サイト内検索へ],

Python + OpenCV で線分検出,点や線の描画、マウス操作

サイト構成 連絡先,業績など コンピュータ実習 データの扱い コンピュータ設定 教材(公開) サポートページ

目次

サイト内の関連Webページ


前準備として,Pythonのインストールが終わっていること.

Python のインストール

※ Python のプログラム作成には、PyCharmなどが便利である.

以下,Windows に Python, git, cmake をインストール済みであるものとして説明を続ける.

OpenCV, spyder パッケージのインストール

Windows では次の手順で行う

  1. Window でコマンドプロンプトを実行

  2. OpenCV, spyder パッケージのインストール

    ※ 「conda install」は、パッケージをインストールするためのコマンド

    conda install -y spyder opencv
    


このページで説明のために使用する画像

https://github.com/opencv/opencv/tree/master/samples/data で公開されている home.jpg を使うことにします (感謝)

  1. まず、C:\image のような作業用のディレクトリ(フォルダ)を作る

  2. 次の Web ページを開く

    https://github.com/opencv/opencv/tree/master/samples/data

  3. home.jpg を選ぶ

  4. クリックしたら、ダウンロード画面に変わるので「Download」をクリック.

  5. 画像ファイルを、C:\image の下に保存

  6. 上と同じ手順で aloeL.jpg, alorR.jpg の2つもダウンロードし、C:\image の下に保存


カラー画像と丸や線の重ね合わせ表示

丸の重ねあわせ

Python プログラムを動かしたい。IPython シェルのコンソールを使う。

import cv2
IMROOT="C:/image/"
bgr = cv2.imread(IMROOT + "home.jpg")
cv2.circle(bgr, (100, 100), 10, 255, -1)
cv2.imshow("", bgr)
cv2.waitKey(0)
cv2.destroyAllWindows()

画像が表示されるので確認. このあと,ウインドウの右上の「x」をクリックしない.画面の中をクリックしてから,何かのキーを押して閉じる

線の重ねあわせ

Python プログラムを動かしたい。IPython シェルのコンソールを使う。

import cv2
IMROOT="C:/image/"
bgr = cv2.imread(IMROOT + "home.jpg")
cv2.line(bgr, (100, 100), (200, 300), 10, 5, -1)
cv2.imshow("", bgr)
cv2.waitKey(0)
cv2.destroyAllWindows()

画像が表示されるので確認. このあと,ウインドウの右上の「x」をクリックしない.画面の中をクリックしてから,何かのキーを押して閉じる


線分検出

Python プログラムを動かしたい。IPython シェルのコンソールを使う。

import cv2 
import numpy as np

lsd = cv2.createLineSegmentDetector()
IMROOT="C:/image/"
bgr = cv2.imread(IMROOT + "home.jpg")
mono = cv2.cvtColor( bgr, cv2.COLOR_BGR2GRAY )
lines, width, prec, nfs = lsd.detect( cv2.Canny(mono, 100, 150) )

for i in range(len(lines)):
    seg = lines[i][0]
    cv2.line(bgr, (seg[0], seg[1]), (seg[2], seg[3]), (0,255,0), 1)

cv2.imshow("", bgr)
cv2.waitKey(0)
cv2.destroyAllWindows()

画像が表示されるので確認. このあと,ウインドウの右上の「x」をクリックしない.画面の中をクリックしてから,何かのキーを押して閉じる


ステレオマッチングによる距離画像の生成

サイト内の関連Webページ: ステレオ画像

Python プログラムを動かしたい。IPython シェルのコンソールを使う。

import cv2 
import numpy as np

IMROOT="C:/image/"
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)
cv2.imshow("", blur)
cv2.waitKey(0)
cv2.destroyAllWindows()


マウス操作の例

丸の重ねあわせ

Python プログラムを動かしたい。IPython シェルのコンソールを使う。

import cv2
IMROOT="C:/image/"
bgr = cv2.imread(IMROOT + "home.jpg")
cv2.circle(bgr, (100, 100), 10, 255, -1)
cv2.imshow("", bgr)
cv2.waitKey(0)
cv2.destroyAllWindows()


問い合わせ先: 金子邦彦(かねこ くにひこ)