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
とか.