ScalaとOpenCV で並列画像処理

公開日: : 最終更新日:2016/01/23 プログラミング, 技術, 画像処理

ヤワイは画像処理を研究していたことがあります。

また、関数型言語であるScalaはアルゴリズムの検討に向いており、画像処理のスタンダードライブラリのOpenCVが使えるということもあり、最近少しずつ試しております。

ソースコードを貼り付けておきます。

たったpar3文字書くだけで並列化できるので、かなりいい感じがします。

import java.io.File
import org.opencv.core._
import org.opencv.highgui._
object Main {

  def main(args: Array[String]): Unit = {
    System.loadLibrary(Core.NATIVE_LIBRARY_NAME);//これを忘れるとリンクエラーが出る
    val dir = new File(".");//カレントディレクトリから
    val files = dir.list.filter( _.endsWith(".jpg"));//jpgファイルのリストを取得
    println("読み込みファイル数 " + files.length + " ファイル");

    /*画像を読み込み 処理時間を名前渡しパラメータで取得*/
    println("シングルプロセス");
    stopwatch( () => files.map(picname => Highgui.imread(picname)) );
    println("マルチコアプロセス " +  scala.collection.parallel.availableProcessors + " core");
    stopwatch( () => files.par.map(picname => Highgui.imread(picname)) );
  }

  def stopwatch(f:() => Unit) = {
    val start = System.currentTimeMillis();
    f();
    val end = System.currentTimeMillis();
    println("process time " + (end-start) + " msec");
  }
}

出力

読み込みファイル数 32 ファイル
シングルプロセス
process time 90 msec
マルチコアプロセス 4 core
process time 40 msec

4コアで2倍以上の高速化です。

関連記事

Github EvolutionalComputation で Rosenbrockを実験してみた

https://github.com/yawaip/EvolutionalComputation

記事を読む

no image

scalaで複数ファイルをコンパイルして実行する方法

scalaで複数ファイルを作って、実行する方法がわからなくて2時間ほど時間を無駄にした。(無職なんだ

記事を読む

no image

Sparkでhdfsに出力 その2

前回のhdfsに出力するはなしの続き hdfsはnamenode(ネームノード)を経由して出力

記事を読む

no image

Scala IDE ( Eclipse )でgithubに接続する

何回やっても忘れてしまって、作業に手間取ってしまうのでメモします。 プロジェクトのところで→[

記事を読む

Github EvolutionalComputationにjDEのScala実装を追加

https://github.com/yawaip/EvolutionalComputation

記事を読む

no image

Sparkを最小労力で動かす その3

結局わかったことは、Cloudera manager難しいってことと、 Spark on Ya

記事を読む

no image

Scalaで文字コードをasciiコード化、さらに2進数に変換

備忘録 val asc:Int = "C".toCharArray()

記事を読む

Github EvolutionalComputationにCMA-ESのScala実装を追加

https://github.com/yawaip/EvolutionalComputation

記事を読む

GoPro時代の釣り動画のハイライトシーン自動作成を考えてみる。

どうもヤワイです。 昨日、今日とバスマスタークラシックのネット中継を、目をこすりながら見ています。

記事を読む

no image

Sparkでhdfsに出力 その1

前の投稿の続き 出力の仕方が困った。ローカルに出してもいいんだけど、ローカルってどこ?わからな

記事を読む

no image
メタニウムMGLとカシータスMGLの飛距離について

メタニウムMGLとカシータスMGLは飛距離については一緒らしいです。

no image
ゾディアス166m-2とクロノス662mbの比較

どうも2ピースロッドが大好きなヤワイです。 同じスペックの竿を2

no image
エリアトラウトで村田基さんの真似を辞めたら釣れるようになった

半年ぶりの更新です。 今年一年は、仕事が忙しくほとんど釣りに行け

上からクロノス、エアエッジ、ブレイゾン、ゾディアス
クロノス 672MHB 使ってみてのレビュー

クロノスロッドはかなりイケてるロッドの気がして、3月に購入してから2回

趣味にエリアフィッシング(ニジマス釣り)をおすすめする7つの理由

休みの日が雨だと何もやることがなくて嫌ですね。昔は雷さえならなければ釣

大好き片倉ダム(笹川湖)~ボート屋紹介~

亀山ダムの釣果情報を出しているページを運営しているものの、なんだかんだ

ピニオンギアのスペースチューニング
アルテグラチューニング

久しぶりの投稿です。 最近、エリアトラウトにどっぷりはまっており

素人がエリアトラウトで人並みに釣ることができるようになるまで

エリアトラウトに始めて2ヶ月が経ちました。完全にハマってます。 技量

王禅寺フィッシュオンへのアクセス1
初エリアトラウトにフィッシュオン王禅寺に行ってきた(公共交通機関でアクセス編)

前回の投稿以降、更新を忘れていたので書きます。 私は車やバイクを

【最安か?】上州屋渋谷の創業祭でジリオン SV TWが10%オフだった

なかなか今年の初バス釣りの予定がたちませんね。 グラフから釣行日

→もっと見る

PAGE TOP ↑