- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!続・OpenCV
[OpenCV+Java+カメラ|http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2016%2D4%2D10]に引き続いて
OpenCVを使ってWebカメラで撮像した映像に対してエッジ検出.
ついでに元画像とのオーバーレイも試してみるなど.
こんな感じ.
* オリジナル
{{ref_image original.png}}
* Cannyでエッジ検出
{{ref_image canny.png}}
* エッジ部分を赤にしてオーバオレイ
{{ref_image canny_overlay.png}}
* ちなみに,エッジ検出画像を反転してみたもの
{{ref_image canny_inv.png}}
ソースコードはこんな感じ.{{ref EdgeDetect.java}}
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を上書き.
自分の顔を撮像してみるのも,結構楽しい.
{{ref_image my_face_canny.png}}
メガネ越しでの顔の輪郭のゆがみがよくみえる.
ちなみに,MacOSXだと,-Djava.library.pathの指定が必要.
java -cp /usr/local/share/OpenCV/java/opencv-310.jar:. \
-Djava.library.path=/usr/local/share/OpenCV/java/ \
EdgeDetect
とか.