GSL Shell 学習:OpenCV の 'Callback' 処理

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

さて、本文。

先日(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 ) 学習は続く。


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


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

コメントの投稿

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

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



おきてがみ

最新記事
カレンダー
07 | 2017/08 | 09
- - 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
ブックマーク