下面是halcon生成的C++代码,耗时11S,结果不准确,看来也不能迷信HALCON。
///////////////////////////////////////////////////////////////////////////////
// File generated by HDevelop for HALCON/C++ Version 8.0
///////////////////////////////////////////////////////////////////////////////
#include "HalconCpp.h"
#ifndef NO_EXPORT_MAIN
// Main procedure
void action()
{
using namespace Halcon;
// Local iconic variables
Hobject Image, Image1, Rectangle, ImageReduced;
Hobject Region, RegionDilation, Pattern, Matches, ConnectedMatches;
Hobject GrayRegions;
// Local control variables
HTuple Width1, Height1, Width, Height, WindowID;
HTuple TemplateID, Row, Column, Error, i;
//Search all good matches of a pattern in an image of letters
//
// dev_close_window(); no window open in C++
read_image(&Image, "D:/Documents and Settings/nyist/My Documents/Visual Studio 2008/Projects/MoreFastMutualInformation/MoreFastMutualInformation/left.bmp");
read_image(&Image1, "D:/Documents and Settings/nyist/My Documents/Visual Studio 2008/Projects/MoreFastMutualInformation/MoreFastMutualInformation/right.bmp");
get_image_pointer1(Image1, _, _, &Width1, &Height1);
get_image_pointer1(Image, _, _, &Width, &Height);
set_window_attr("background_color","black");
open_window(0,0,(Width1/4)*3,(Height1/4)*3,0,"","",&WindowID);
gen_rectangle1(&Rectangle, 200, 425, 260, 550);
reduce_domain(Image, Rectangle, &ImageReduced);
threshold(ImageReduced, &Region, 50, 150);
dilation_circle(Region, &RegionDilation, 5.0);
reduce_domain(Image, RegionDilation, &Pattern);
//Preparing a pattern for template matching
create_template(Pattern, 255, 4, "sort", "original", &TemplateID);
fast_match_mg(Image1, &Matches, TemplateID, 40, 3);
connection(Matches, &ConnectedMatches);
add_channels(ConnectedMatches, Image1, &GrayRegions);
//Search the best matches of the character pattern
best_match(GrayRegions, TemplateID, 20, "true", &Row, &Column, &Error);
disp_obj(Image1, WindowID);
set_color(WindowID,"red");
//Display a circle on the position of the best match
for (i=0; i<=(Row.Num())-1; i+=1)
{
if (HTuple(Error)<255)
{
disp_circle(WindowID, HTuple(Row), HTuple(Column), 10.5);
}
}
}
#ifndef NO_EXPORT_APP_MAIN
int main(int argc, char *argv[])
{
using namespace Halcon;
// Default settings used in HDevelop (can be omitted)
set_system("do_low_error","false");
action();
return 0;
}
#endif
#endif |