GSL Shell 学習:OpenCV 使えそうダ?

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

さて、本文。

「GSL Shell 学習」=「Lua 学習」も可成り進んだ?

Python”に取って代わるには、
やはり、“OpenCV”が欠かせない。


先日(2016-02-20)の記事:
GSL Shell 学習:Lua で、OpenCV を使いたい
では、結局“OpenCV”からあらぬ方向に離れてしまった。


ふと、思った。
昨年7月(2015-07-21)の記事:
Python/OpenCV 学習:OpenCV 3.0 gold 導入
で書いた、最新版?“OpenCV 3.0”は使えないのか?

当時は、“Python”で使うコトダケを考えていたので、
結局「cv2.pyd」26.8MB 1つ!
で済ませていた。

改めて、書庫の中を見ると、
/opencv/build/x86/vc12/bin/ の中に、
「opencv_world300.dll」「opencv_world300d.dll」等があった。

'd'が付くのは、(ネットで検索してみたところ)デバッグモード用ですね。

つまり、「opencv_world300.dll」26.3MB 1つ。
( 因みに、'd' の方は、38.2MB もある。)

これ、Python 用(~.pyd)より僅かに小さいダケ。
これで、行けそうですね。


2章, OpenCV 入門
を見つけたので、
そこにある例でコーディングしてみた。

'hogehoge.tiff'なる、GrayScal TIFF 画像を読み込む:
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* );
]]
Fname = 'hogehoge.tiff'
img = cv2.cvLoadImage( ffi.cast('char*', Fname) )

XX = img.widthStep
print( XX )

xx, yy = img.width, img.height
print( xx, yy )

b = ffi.new( 'uint8_t[?]', XX*yy )
ffi.copy( b, img.imageData, XX*yy )

print( b[0], b[xx-1], b[XX*(yy-1)+xx-1] ) -- 左上、右上、右下
思った通りにできた。
一応、「IplImage」型では、行けそう。

だが、画像データは、
行毎に、4バイト境界に調整されていて、隙間が出来ている。

だから、'width' と 'widthStep' がある?


もう1つ「cv::Mat」型もあるようダ。
こっちが後から出てきた様な?

変換については、
[opencv] cv::MatとIplImageの相互変換
などなど。


参考資料は?
基本構造体 - opencv v2.1 documentation
OpenCV: 基本構造体(Basic Structures)サンプルコード

これらも、初心者<紙>には、必要だが、
もっと新しくて纏まったもの:
「OpenCV 2.4.12.0 documentation」の、
OpenCV API Reference
は絶対必要。

じつは、「cvSaveImage」でアボートしていたが、

この OpenCV 2.4.12.0 ドキュメントで、
“3番目の引数が追加された”為だったことを知った。


そうすると、
更に、OpenCV 3.0 ドキュメントが必要!
これ:
OpenCV: Transition guide -> Changes overview
とか、・・・???


更なる学習ダ。


本日はここまで。


Lua ( GSL Shell ) 学習は続く。


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


160115,16
関連記事
スポンサーサイト

コメントの投稿

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

おきてがみ/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
ブックマーク