トップページ -> データベース関連技術 -> OpenCV の機能とプログラム例 -> Python + OpenCV で線分検出,点や線の描画、マウス操作
[サイトマップへ], [サイト内検索へ]

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

目次

サイト内の関連ページ


前準備

OpenCV のサンプル画像 fruits.jpg, home.jpg のダウンロード

ダウンロード手順は,「別のページ」で説明している.

Python 3, Python 3 用 opencv-python パッケージのインストール


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

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

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

    [image]
  2. 次の Web ページを開く

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

  3. home.jpg を選ぶ

    [image]
  4. クリックしたら、ダウンロード画面に変わるので「Download」をクリック.
  5. 画像ファイルを、C:\image の下に保存
  6. 上と同じ手順で aloeL.jpg, alorR.jpg の2つもダウンロードし、C:\image の下に保存

    [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()

[image]

画像が表示されるので確認. このあと,ウインドウの右上の「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()

[image]

画像が表示されるので確認. このあと,ウインドウの右上の「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()

[image]

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


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

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

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()

[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()

本サイトのサイトマップは,サイトマップのページをご覧下さい. 本サイト内の検索は,サイト内検索のページをご利用下さい.

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