トップ 差分 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

Diary/2016-4-25

続・OpenCV

OpenCV+Java+カメラに引き続いて
OpenCVを使ってWebカメラで撮像した映像に対してエッジ検出.
ついでに元画像とのオーバーレイも試してみるなど.
こんな感じ.

  • オリジナル
  • Cannyでエッジ検出
  • エッジ部分を赤にしてオーバオレイ
  • ちなみに,エッジ検出画像を反転してみたもの

ソースコードはこんな感じ.EdgeDetect.java(197)

capture.read(webcam_image);

で撮ったカメラ画像を

Imgproc.cvtColor(webcam_image, dest_img, Imgproc.COLOR_BGR2GRAY);

で白黒化して,

Imgproc.Canny(dest_img, canny_img, 50, 200);

で,Cannyを使ってエッジ検出.エッジ検出で得られた部分が白に.

Imgproc.cvtColor(canny_img, canny_bgr_img, Imgproc.COLOR_GRAY2BGR);

で,元の画像(webcam_image)にあわせてBGR化して,

canny_color_img.copyTo(webcam_image, canny_bgr_img);

で,canny_bgr_imgの黒じゃない部分(エッジ部分)にだけ
webcam_imageの上にcanny_color_imgを上書き.

自分の顔を撮像してみるのも,結構楽しい.

メガネ越しでの顔の輪郭のゆがみがよくみえる.

ちなみに,MacOSXだと,-Djava.library.pathの指定が必要.

java -cp /usr/local/share/OpenCV/java/opencv-310.jar:. \
     -Djava.library.path=/usr/local/share/OpenCV/java/ \
     EdgeDetect

とか.