R言語による電子カルテデータの二次利用

~R言語初心者がデータ処理を楽しめるように基本的内容中心のサイトです~

Rからopencvを使ってみる。

opencv使いたいときは不慣れなpython使ってましたが、いつの間にかRからopencvを利用するパッケージがでてました。できることは限られていますが、簡単に利用できるという意味ではpythonよりとっつきやすいと思います。

github.com

インストール(Windows

devtools::install_github("ropenscilabs/opencv")

これだけです。

画像の読み込み、出力

ocv_read(path)で読み込みます。出力は、オブジェクト名をそのまま実行してRstudioのViewerペインに出力するか、ocv_displayで別ウインドウに出力できます。

library(opencv)
child = ocv_read("child.jpg")
child
ocv_display(child)

f:id:r_beginner:20180919140613j:plain

画像の情報はocv_info(image)で確認できます。

> ocv_info(child)
$width
[1] 367

$height
[1] 465

$channels
[1] 3

画像の書き出し

ocv_write(image, path)で書き出せます。拡張子もjpg, png, bmp等いけました。

ocv_write(child, "hogehoge.jpg")
ocv_write(child, "hogehoge.png")
ocv_write(child, "hogehoge.bmp")

顔検出

もちろん画像ファイルの読み書きはmagickパッケージや他のパッケージでもできますが、これはopencvを使えるので、読み込んだ画像から、簡単に顔検出できます。

ocv_face(image)だけです。

ocv_face(child)

f:id:r_beginner:20180919141634j:plain

その他のフィルター

いくつかフィルターが準備されているようです。

ocv_edges(child)
ocv_hog(child)
ocv_markers(child)
ocv_sketch(child)
ocv_stylize(child)

f:id:r_beginner:20180919151417p:plain

webカメラの利用

おそらく僕にとって、これが一番有用な気がします。ちょっとパソコンいじりながらサンプル画像欲しい時、webカメラから簡単に画像撮れちゃいます。

img = ocv_camera()
ocv_write(img, "drone.jpg")

f:id:r_beginner:20180919142757j:plain

もちろん動画も出力できます。ocv_video関数を用います。先程のフィルターを引数に動画出力できるようです。

ocv_video(ocv_face)
ocv_video(ocv_edges)
ocv_video(ocv_blur)
ocv_video(ocv_hog)
ocv_video(ocv_markers)
ocv_video(ocv_mog2)
ocv_video(ocv_sketch)
ocv_video(ocv_stylize)

ocv_edgesのサンプル
f:id:r_beginner:20180919151937g:plain
ocv_sketchのサンプル
f:id:r_beginner:20180919174829g:plain
ocv_stylizeのサンプル
f:id:r_beginner:20180919174856g:plain

こまかい設定するなら、今のところpythonで書いたほうが良いと思いますが、短いコードでwebカメラから画像を取り込み、簡単に加工するなら、このパッケージがオススメです。

環境

> sessionInfo()
R version 3.4.0 (2017-04-21)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)

Matrix products: default

locale:
[1] LC_COLLATE=Japanese_Japan.932  LC_CTYPE=Japanese_Japan.932   
[3] LC_MONETARY=Japanese_Japan.932 LC_NUMERIC=C                  
[5] LC_TIME=Japanese_Japan.932    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] opencv_0.1

loaded via a namespace (and not attached):
 [1] httr_1.2.1      compiler_3.4.0  magrittr_1.5    R6_2.2.2        tools_3.4.0    
 [6] withr_2.1.2     curl_2.6        yaml_2.1.19     Rcpp_0.12.18    memoise_1.1.0  
[11] git2r_0.18.0    digest_0.6.12   devtools_1.13.5