GSL Shell 学習:OpenCV の 'Callback' 処理
2016-02-26 : 
PCクリニック
先日(2016-02-23)の記事:「GSL Shell 学習:OpenCV 使えそうダ?」以降、
“OpenCV”の学習を続けている。
そこで、マウスクリック・イベントでマウス位置座標を知りたい。
「AkiWiki」の「マウスイベント」を見つけた。
OpenCVでマウスを扱う
void cvSetMouseCallback( char*, CvMouseCallback, void* )
・ 引数
・ 返り値
・・・・・
・・・・・
等々とあり、
サンプルコード
が載っていた。
でも、これは“C言語”ソース。
でも、大丈夫。
先月(2016-01-16)の記事:
「Lua 学習:LuaJIT の FFI 使用法」
や、
「GSL Shell 学習:OpenCV 使えそうダ?」
に倣って、“GSL Shell”でもコーディング出来る。
やってみた。
local cv2 = ffi.load('opencv_world300')出来ました。
ffi.cdef[[
typedef struct _IplImage{
int nSize; int ID; int nChannels;
int alphaChannel; int depth;
char colorModel[4]; char channelSeq[4];
int dataOrder; int origin; int align;
int width; int height;
struct _IplROI *roi; struct _IplImage *maskROI;
void *imageId; struct _IplTileInfo *tileInfo;
int imageSize; char *imageData;
int widthStep;
int BorderMode[4]; int BorderConst[4];
char *imageDataOrigin;
} IplImage;
IplImage* cvLoadImage( char*, int );
int cvNamedWindow( char*, int );
void cvShowImage( char*, IplImage* );
int cvWaitKey( int );
void cvDestroyWindow( char* );
typedef void ( __stdcall *CvMouseCallback ) ( int, int, int, int );
void cvSetMouseCallback( char*, CvMouseCallback );
]]
function charA( str ) return ffi.cast( 'char*', str ) end
local onmouse = ffi.cast( 'CvMouseCallback', function( event, x, y, flags )
if event == 1 then
print( x, y, flags ) -- {x,y}は、ウィンドウ内座標。
end
end )
---------------------------------------------------------------------
Fname = 'hogehoge.tiff'
img = cv2.cvLoadImage( charA(Fname), 0 )
Wnm = 'Example'
cv2.cvNamedWindow( charA(Wnm), 0 )
cv2.cvSetMouseCallback( charA(Wnm), onmouse )
cv2.cvShowImage( charA(Wnm), img )
k=0 while k ~= 27 do k = bit.band( 0xFF, cv2.cvWaitKey(1) ) end
cv2.cvDestroyWindow( charA(Wnm) )
os.exit(0)
「マウスイベント」ページの最後には、
備考
イベントの種類
フラグの種類
もあり、
更なる学習ダ。
本日はここまで。
Lua ( GSL Shell ) 学習は続く。
見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒


160202
- 関連記事
-
- GSL Shell 学習:配列定義あれこれ (2016/03/02)
- GSL Shell 学習:外部プログラムの実行 (2016/03/01)
- GSL Shell 学習:LuaJIT の性能(例) (2016/02/28)
- GSL Shell 学習:モジュールの作り方 (2016/02/27)
- GSL Shell 学習:OpenCV の 'Callback' 処理 (2016/02/26)
- GSL Shell 学習:'bit'モジュール (2016/02/25)
- GSL Shell 学習:Nonlinear Least Squares Fit (2016/02/24)
- GSL Shell 学習:OpenCV 使えそうダ? (2016/02/23)
- GSL Shell 学習:General Data Tables ( GDT ) (2016/02/22)
スポンサーサイト