LoginSignup
9
7

More than 3 years have passed since last update.

【R言語】RでopenCVを動かしてみる

Posted at

Rで画像処理ってできるんだろうかと軽い気持ちでネットを調べてみたらR版のopenCVを利用すれば実現出来ることがわかりまして、色々動かしてみました。

きちんとopenCVを使用したことが無いもので、従来のopenCVと比べて出来ることは限られているのかもしれませんが、使い方を紹介させていただきます。

今回、サンプルに使用する画像は著作権フリー画像を扱っているGAHAG様から写真をいただきました。ありがとうございます。

画像処理

まずは画像処理から。
サンプル画像はopencv::ocv_picture関数でWebカメラ撮影することもできますが、自前だとたいへん見栄えがよろしくないので、大人しくプロの写真を使うことにしました。
画像は以下を使用します。
元画像.png

ソースは以下です。

opencv.r
# ライブラリ -------------------------------------------------------------------

pacman::p_load(opencv)


# ソース本文 -------------------------------------------------------------------

#画像の読み込み
photo <- ocv_read("gahag-0119426971-1.jpg")

photo

顔認識

画像に手を加えていきます。
まずは顔認識。opencv::ocv_face()関数で顔認識をします。

opencv.r
#顔認識
ocv_face(photo)

顔認識.png

顔認識(マスキング処理)

顔認識をしてマスキング処理を加えます。
opencv::ocv_facemask()関数を使用します。

opencv.r
#顔をマスキング
ocv_facemask(photo)

顔のマスキング.png

エッジ検出

エッジ検出を行います。
opencv::ocv_edges()関数を使用します。

opencv.r
#エッジ検出
ocv_edges(photo)

エッジ検出.png

ぼかし

ぼかし表現で表示します。
opencv::ocv_blur()関数を使用します。

opencv.r
#ぼかし
ocv_blur(photo)

ぼかし.png

スケッチ風

スケッチ風に表現します。
opencv::ocv_sketch()関数を使用します。

opencv.r
#スケッチ風
ocv_sketch(photo)

スケッチ風.png

スタイライズ

スタイライズ効果を入れます(どんな効果なのかは良くわかっていない)。
opencv::ocv_stylize()関数を使用します。

opencv.r
#スタイライズ効果
ocv_stylize(photo)

スタイライズ効果.png

マーカー表示

マーカーをプロットします。
opencv::ocv_markers()関数を使用します。

opencv.r
#マーカー表示
ocv_markers(photo)

マーカー表示.png

局所特徴領域を表示

局所的に特徴のある領域を□で囲みます。
opencv::ocv_hog()関数を使用します。

opencv.r
#局所特徴領域
ocv_hog(photo)

局所特徴.png

動画処理

RのopenCVで動画処理もできるようです。
opencv::ocv_video()関数を使用します。

opencv.r
#動画処理
ocv_video(function(input){
  #エッジ検出
  ocv_edges(input)
})

エッジ_動画.png

筆者をエッジ検出した動画が撮れました。
サンプルとしてopencv::ocv_edges()関数を使用しましたが、顔認識(ocv_face()関数)やマーカー表示(ocv_markers()関数)でも難なく動作を確認することができました。

おわり

実用性はさておき、ご興味があれば触ってみるのはいかがでしょう。
やっていきましょう。

9
7
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
7