LuaCV:OpenCV library wrapper for Lua language

2017-07-28 :  PCクリニック
Python、C言語、Perl、グルコサミン、Firefox
以前(2017-07-21)の記事「GSL Shell/OpenCV 学習:cvFitEllipse2」以来、
“GSL Shell”でのOpenCVでは、
画像内のコンター(群)を求めるcvFindContoursの動作不正?の原因が分からない。


それで、「Lua OpenCV」で検索していたら、・・・・・
“GitHub”に、
marcoscoffier/lua---opencv: bindings to some parts of …

satoren/luaOpenCV: OpenCV wrapper for Lua
が見つかる。
しかし、これらはソースコードのみ。

更に探していたら、
“SourceForge.net”の「LuaCV download
が見つかった。

ここで、右にある大きい緑の「Download」ボタンではなくて、
その下にある、普通サイズ文字:
Browse All Files」からは、
Binariesが見つかった。

「LuaCV.exe」の他に、
「lua.zip」「luacv.zip」「opencv.zip」の3つの書庫がある。
それぞれの中身は、4ファイル、3ファイル、12ファイル。
これらを一箇所に展開した。
重複するので結果15ファイル。
OpenCVのバージョンは2.3.1で、
Luaは、5.2.0だった。

そこで、1本コーディングしてみた;
----- test_FindContors.lua -----
cv = require'luacv'

img2 = cv.LoadImage( 'Threshold.tif' ) -- これはカラーモードで読み込み
xx, yy = img2.width, img2.height
sz = cv.Size( xx, yy )

img1 = cv.CreateImage( sz, cv.IPL_DEPTH_8U, 1 ) -- GrayScale 用領域
cv.CvtColor( img2, img1, cv.CV_BGR2GRAY )

---------- 以下でテスト
storage = cv.CreateMemStorage()
a, contours = cv.FindContours( img1, storage, cv.CvContour["size"], cv.CV_RETR_LIST, cv.CV_CHAIN_APPROX_SIMPLE, cv.Point(0,0) )
print( contours ) -- 確認用
while contours do
print( contours.total ) -- 確認用
for i=1,5 do
w = cv.GetSeqElem( contours, i, cv.CvPoint["name"] )
io.write( w.x , ' ', w.y , ' ' ) -- 確認用
end print()
for i=k-4,k do
w = cv.GetSeqElem( contours, i, cv.CvPoint["name"] )
io.write( w.x , ' ', w.y , ' ' ) -- 確認用
end print()
contours=contours.h_next
end
でイイのかな?

そして、その場でDOSプロンプトで
Lua  test_FindContors.lua
としたら、
出来ているようダ。

続けて、楕円フィッティングをやってみた:
----- test_FindC_FitEs.lua -----
cv = require'luacv'

img2 = cv.LoadImage( 'Threshold.tif' ) -- これはカラーモードで読み込み
xx, yy = img2.width, img2.height
sz = cv.Size( xx, yy )

img1 = cv.CreateImage( sz, cv.IPL_DEPTH_8U, 1 ) -- GrayScale 用領域
cv.CvtColor( img2, img1, cv.CV_BGR2GRAY )

---------- 以下でテスト
storage = cv.CreateMemStorage()
a, contours = cv.FindContours( img1, storage, cv.CvContour["size"], cv.CV_RETR_LIST, cv.CV_CHAIN_APPROX_SIMPLE, cv.Point(0,0) )

while contours do
z = cv.FitEllipse2( contours )
print( z["center"].x, z["center"].y, z["size"].width, z["size"].height, z["angle"] ) -- 確認用
cv.Ellipse( img2, cv.Point(z["center"].x,z["center"].y), cv.Size(z["size"].width/2,z["size"].height/2), z["angle"], 0, 360, cv.Scalar(0,0,255), 1, 8,0 )
contours=contours.h_next
end
cv.SaveImage( 'LuaCV.png', img2 )
cv.ClearMemStorage( storage )
でしょうか?

キッチリ結果が出ていた。


これで行けると良いが、
これは、LuaJITに対応していない!

4月(2017-04-21)の記事:
call_Lua52 似非モジュール(基本Lua呼び出し)
で書いた方式でも一応出来たが???


どうしようかナ???


本日はここまで。


Lua ( GSL Shell ) / OpenCV 学習は続く。


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


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

コメントの投稿

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

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



おきてがみ

最新記事
カレンダー
09 | 2017/10 | 11
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 31 - - - -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

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

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


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

Google Analytics
ブックマーク