GSL Shell/OpenCV 学習:cvFitEllipse2

2017-07-21 :  PCクリニック
Python、C言語、Perl、グルコサミン、Firefox
このところ、Python プログラムを“GSL Shell”に移植している。

その中で“楕円フィッティング”の処理コードが出てきた。

当時の“Python”版については、
一昨年8月(2015-08-18)の記事:
Python/OpenCV 学習:cv2.fitEllipse」で書いた如く、・・・

(1)cv2.findContoursによって、画像内のコンター(群)を求める。

(2)各コンター cnt に対して、cv2.fitEllipseによって、
    ・中心座標
    ・2つの径
    ・角度(X軸開始、時計回り)
   を求める。

と云う手順で、実際のコード(例)は:
#### Python コード
#### ・・・・・
#### Bimg : 二値化済画像
_, contours, _ = cv2.findContours( Bimg, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE )

for m in range( len(contours) ):
cnt = contours[m]
ellipse = cv2.fitEllipse( cnt )
# これで、中心点、2つの径、角度(時計回り) を、実数値で得る

#### ・・・・・
の様。


これに対して“GSL Shell”では、
昨年3月(2016-03-26)の記事:
GSL Shell 学習:“cv2.lua”モジュール自作」で書いた如く、
“OpenCV”のdll利用、即ち C 言語版を使う。


それから、
参考サイトとして、
opencv.jp - OpenCV 計算幾何(Computational Geometory)サンプルコード
の2番目の、
  楕円のフィッティング cvFitEllipse2
  求めた輪郭に対して,楕円をフィッティングする
の、
  “サンプルコード”
も参考にし、

頑張って書いてみた:
---- GSL Shell コード
cv2 = require'cv2'
ffi.cdef[[
/****************************/
/* 不足分の関数宣言を記述 */
/****************************/
]]
---- ・・・・・
storage = cv2.cvCreateMemStorage( 0 )
contours=ffi.new( 'CvSeq*[1]' )
r = cv2.cvFindContours( Bimg, storage, contours, 88, 3, 2 )
it=ffi.new('CvTreeNodeIterator[1]')
cv2.cvInitTreeNodeIterator( it, contours[0], 3 )

while true do
cnt = ffi.cast( 'CvSeq*', cv2.cvNextTreeNode( it ) )
if cnt == nil then break end
ell = cv2.cvFitEllipse2( cnt )
-- この ell が CvBox 型データで、中心点等々を得られる。

---- ・・・・・
と云った感じ。



ところが、
何故か?2つの径、角度 は合っている?
しかし、中心点 がデタラメ???



頭を冷やして出直しダ。


本日はここまで。


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


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


170607-12
関連記事
スポンサーサイト

コメントの投稿

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

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