WIL説明書(C++)
3.0.0
総合概要
諸情報
モジュール
名前空間
クラス
ファイル
サンプルコード(Sobel法)
ハフ検出
»
円ハフ検出
ソースコード:
// $Revision: 1.1 $
void
CircleHoughSobelEdge()
{
// 1) インスタンスの準備
FVCL::Hough::CFvCircleHoughSobelEdge
parser;
FVCL::Hough::CFvCircleHoughResult
result;
FVCL::Data::CFvImage
src;
// 2) 処理対象画像の取り込み
INT
status =
FVCL::File::LoadImageFile
( _T(
"floppy_hough.jpg"
), &src );
if
( status !=
FVCL_ErrorCode::_SUCCESS
)
{
_tprintf(_T(
"%s: Failed to load image file. code=%d\n"
), __TFUNCTION__, status);
return
;
}
// 3) 処理対象画像の有効性検査
if
(
FVCL_ErrorCode::_SUCCESS
!=
FVCL::Hough::CFvCircleHoughSobelEdge::CheckValidity
( src ) )
return
;
// 4) 画像処理準備
parser.
SetSrcImage
( 0, &src );
parser.
SetResult
( &result );
// 5-1) パラメータ設定 (本体)
FVCL::Hough::CFvCircleHoughParam
& param = parser.
GetParam
();
param.
SetResolution
( 1.0 );
param.
SetRadiusMin
( 20.0 );
param.
SetRadiusMax
( 40.0 );
param.
SetQRange
( 30 );
param.
SetEdgePercent
( 20 );
param.
SetMinScore
( 8 );
param.
SetObjectColor
(
FVCL::Hough::ObjectColor::BlackOrWhite
);
param.
SetMergeCenter
( 2 );
param.
SetMergeRadius
( 1 );
// 5-2) パラメータ設定 (エッジ検出部分)
FVCL::Edge::CFvEdge2DSobelParam
& param_edge = parser.
GetParamEdge
();
param_edge.
SetEdgeThreshold
( 120 );
param_edge.
SetNmsLength
( 1 );
// 6) 画像処理実行
parser.
Execute
();
// E) 表示範囲
RECT
rect;
rect.
left
= 0;
rect.
top
= 0;
rect.
right
= src.
GetHorzSize
();
rect.
bottom
= src.
GetVertSize
();
// E) 確認用
{
// 画像表示の準備
FVCL::GDI::CFvDisplay
display;
display.
Create
( 1 );
display.
SetImage
( &src );
display.
SetDisplayRect
( rect );
// オーバレイの生成
FVCL::GDI::CFvOverlay
* pOverlay0 = display.
GetOverlay
(0);
pOverlay0->
SetScaling
(
true
);
// 描画図形の生成と追加
for
(
UINT
i = 0; i < (parser.
GetResult
()->
GetCount
()); i++ )
{
FVCL::Hough::CFvCircleHoughData
data;
parser.
GetResult
()->
GetData
(i, &data );
// 円データ生成
FVCL::GDI::CFvGdiCircle
circle( data.
center_x
, data.
center_y
, data.
radius
);
circle.GetPen().SetColor(
RGB
(255,0,0) );
// オーバレイへ追加
pOverlay0->
DrawFigure
( circle );
}
// 画像保存
FVCL::Data::CFvImage
canvas;
display.
SaveImage
( &canvas, display.
GetDisplayRect
(), 1.0 );
FVCL::File::SaveImageFile
(_T(
"Hough.CircleHoughSobelEdge.png"
), canvas);
}
}
Documentation copyright © 2007 FAST Corporation. [B-001864]
Generated on 2023年11月02日(木) 10時12分56秒 for WIL説明書(C++) by
doxygen
1.8.11