背景
OpenCVを使って画像フィルタを試す時など、画像全体ではなく一部をクロップしたり、ループ部分だけへの操作などが欲しい時があります。
そんな時いちいち座標を自分で定義してやるのはヒジョーに面倒なので、画面で各種の図形入力ができるようにしたライブラリを作りました。githubにあげてあるので、良かったら使ってみてください。
OpenCV の python バインディング専用です。
機能
- LineOperator: ドラッグで線を入力する
- PolylineOperator: 点をクリックして行き折れ線を入力する
- PolygonOperator: 点をクリックして行きポリゴンを入力する
- RectOperator: ドラッグで矩形を入力する
- BrushOperator: ドラッグでマスク領域を塗りつぶす
- KeyOperator: ウィンドウでのキー管理
使い方
LineOperator の使い方はこんな感じです。
import cv2
from cv2operator import KeyOperator, OperatorWindow, LineOperator
def line_cb(p1, p2):
print(f"line: p1={p1}, p2={p2}")
image = cv2.imread("goru.jpg")
window = OperatorWindow("example", image)
line_op = LineOperator(window, callback=line_cb)
key_op = KeyOperator()
print(key_op.help())
key_op.main_loop()
その他の入力
その他については examples の demo.py を参照してください。
こんな入力が可能です。