Lua 学習:IM ( An Imaging Toolkit )

2016-01-29 :  PCクリニック
本文の前に、
-・・・ -・-
現時点での blogramのランクインカテゴリは、
6、3、0、0、1、 0、0、0、0、0(40)で、換算ポイント 86pt 。
「化学業界」「硝子業界」「e-radio」「グルコサミン」、
「Python」「FM COCOLO」「Firefox」bg値変動のみ。
「Perl」「C言語」「FM青森」全く変化無し。
・-・ - -・

さて、本文。

一昨年(2014-03-06)の記事:「Python 学習:Image処理
で書いているが、
“Python”では、
“PIL(Python Imaging Library)”の発展形
Pillow: a modern fork of PIL
を入れている。


“Lua”ではどうなの?

「lua Image Processing」で検索してみた。

「SmallScriptImageProcessor」の
LIP (Lua Image processor)
が見つかった。

  LIP (Lua Image processor) is an open source Image Processing
   library, or better, a simple application able to analyze
   and elaborate image and sequences of images
   using LUA as scripting language.
   Written in C/C++, it is cross-platform ( ・・・ ) and robust.
  LIP uses FreeImage to load image and FreeType to draw text,
   but several Image Processing algorithm are built-in application.
  Using LIP can you create various application,
   like thumbnail for your web site,
   a set of visual effects for photo, and so on.

はい、例のモノでは:

  リップ (Lua イメージ プロセッサ) は、オープン ソースの画像処理
   ライブラリ以上を分析し、イメージとスクリプト言語の
   LUA を使用してイメージのシーケンスを詳しく説明することができる
   シンプルなアプリケーションです。
   C で書かれて、それはクロス プラットフォーム ( ・・・ ) と堅牢な。
  唇画像とテキストの描画に FreeType を読み込む
   FreeImage を使用しますが、いくつかの画像処理アルゴリズムは、
   組み込みのアプリケーション。
  リップを使用することができます web サイト、写真、視覚効果のセットには、
   サムネイルのようなさまざまなアプリケーションを作成したり。

?????

一旦、上記3つをダウンロードして、確認してみた。

どうもイマイチなので、止めた。


で、“LIP”のページの最後の方に、

  Similar Projects:
  Lua-GD: a GD LUA Bind
  IM: Image Representation, Storage, Capture and Processing
  GLUAS: a GIMP plugin

がある。

“GLUAS”は「GIMP」のプラグイン。なのでパス。
“Lua-GD”は「GD」の Lua binding のセットで、2006 年?・・・古い?

“IM”は?・・・“3.10”が 2015-09-18 にリリースされている。

これに決めよう。

“Windows”の“Dynamic”の“32ビット版”と云うことで、
「im-3.10_Win32_dllw4_lib.zip」(2015-09-18付)  1.72MB
をダウンロードした。

中には沢山入っているが、
「im.dll」(1.61MB)1つあれば良さそう?


「IM」ページの左側:
“Storage”の“Guide”ページにある例から、( FFI 利用 )
local ffi = require 'ffi'
im = ffi.load( 'im' )
ffi.cdef[[
void* imFileOpen( const char* fname, void* error);
int imFileReadImageInfo( void* fp, int i, void* xx, void* yy, void* mode, void* type);
int imFileClose( void* fp );
]]

Fname = 'hogohoge.tiff'
fnm = ffi.new( 'uint8_t[?]', #Fname ); fnm = Fname

error = ffi.new( 'int16_t[1]' )
width = ffi.new( 'int16_t[1]' )
height = ffi.new( 'int16_t[1]' )
color_mode = ffi.new( 'int16_t[1]' )
data_type = ffi.new( 'int16_t[1]' )

IN = im.imFileOpen( fnm, error );
Er = im.imFileReadImageInfo( IN, 0, width, height, color_mode, data_type )
print( width[0], height[0], color_mode[0], data_type[0] )
im.imFileClose( IN );
でテスト。

出力結果は、
  41  39  1026  0
テストした画像は、
幅 41、高さ 39、GrayScale だった。

些か行数が多いが、使えそうですね。

“color_mode”や“data_type”に関しては、学習継続。


それで、データ本体の取得は?・・・

ファイルクローズの前に、以下を追加。
xx, yy = width[0], height[0]
data = ffi.new( 'uint8_t[?]', xx*yy )

Err = im.imFileReadImageData( IN, data, 0, -1 )
-- no bitmap convertion, use original color mode flags
確認の為の表示:
print( data[0], data[xx-1], data[xx*yy-1] )
これで、
画像の 左上、右上、右下 3箇所の pixel の GrayScale 値が表示された。

完璧???


本日はここまで。


Lua 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


151229
関連記事
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
05 | 2017/06 | 07
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク