欢迎光临散文网 会员登陆 & 注册

Halcon10-C语言图像处理2

2023-07-02 11:38 作者:Halcom中国  | 我要投稿

#include "HalconC.h"



main()

{

  Hobject   Horse,Sobel,Seg,Skel;

  Htuple    paint_mode,luts;

  int       i,num;

  double    Threshold;

  Hobject   Reg,Liste;

  long      WindowHandle;

  long      Pointer,Width,Height;

  char      Type[MAX_STRING];

  Htuple    WindowHandleTuple;


  (void)printf("Read image <horses>\n");

  if (read_image(&Horse,"horses") != H_MSG_TRUE)

  {

    (void)printf("Could not find or open file <horses>\n");

    (void)printf("Specify HALCONIMAGES to the image directory\n");

    return(1);

  }  

  (void)get_image_pointer1(Horse,&Pointer,Type,&Width,&Height);

  (void)open_window(0,0,Width,Height,0,"visible","",&WindowHandle);

  (void)set_part(WindowHandle,0,0,Height-1,Width-1);


  create_tuple(&WindowHandleTuple,1);

  set_i(WindowHandleTuple,WindowHandle,0);


  (void)disp_image(Horse,WindowHandle);

  (void)printf("-> To continue: Click with mouse in graphics window ...\n");

  (void)get_mbutton(WindowHandle,_,_,_);   /* anonymous variable */

  

  (void)printf("Edge filter (sobel)\n");

  (void)sobel_amp(Horse,&Sobel,"sum_abs",3);

  (void)disp_image(Sobel,WindowHandle);

  (void)printf("-> To continue: Click with mouse in graphics window ...\n");

  (void)get_mbutton(WindowHandle,_,_,_);

  

  /* display LUTs */

  (void)printf("Query all available LUTs:\n");

  (void)T_query_lut(WindowHandleTuple,&luts);

  num = length_tuple(luts);

  if (num <= 1)

    (void)printf("-> No LUTs available!\n");

  else

  {

    for (i=1; i<num; i++)  /* ignore first LUT (default) */

    {

      (void)printf("-> Using LUT <%s> ... ",get_s(luts,i)); 

      (void)set_lut(WindowHandle,get_s(luts,i));

      /* redisplay for 24 bit displays ... */

      (void)disp_image(Sobel,WindowHandle);

      (void)printf("continue: click with mouse\n");

      (void)get_mbutton(WindowHandle,_,_,_);  

    }

    (void)set_lut(WindowHandle,"default");   /* set LUT back */

  }

  destroy_tuple(luts);

  

  (void)printf("Display histogram of sobel image\n");

  (void)disp_image(Sobel,WindowHandle);

  create_tuple(&paint_mode,4);

  set_s(paint_mode,"histogram",0);

  set_i(paint_mode,150,1);     /* center of gravity (row) */

  set_i(paint_mode,150,2);     /* center of gravity (column) */

  set_i(paint_mode,2,3);       /* size */

  (void)T_set_paint(WindowHandleTuple,paint_mode);

  (void)set_draw(WindowHandle,"margin");

  (void)set_color(WindowHandle,"red");

  (void)disp_image(Sobel,WindowHandle);

  destroy_tuple(paint_mode);

  create_tuple(&paint_mode,1);

  set_s(paint_mode,"default",0); /* back to original paint mode */

  (void)T_set_paint(WindowHandleTuple,paint_mode);

  destroy_tuple(paint_mode);

  (void)printf("-> To continue: Click with mouse in graphics window ...\n");

  (void)get_mbutton(WindowHandle,_,_,_);  

  

  (void)printf("Segmentation\n");

  (void)min_max_gray(Sobel,Sobel,20.0,_d,&Threshold,_d);

  (void)printf("-> Used thresholds: %f %f\n",Threshold,255.0);

  (void)threshold(Sobel,&Seg,Threshold,255.0);

  (void)clear_window(WindowHandle);

  (void)set_draw(WindowHandle,"fill");

  (void)disp_region(Seg,WindowHandle);

  (void)printf("-> To continue: Click with mouse in graphics window ...\n");

  (void)get_mbutton(WindowHandle,_,_,_);   

  

  (void)printf("Calculation of skeleton\n");

  (void)skeleton(Seg,&Skel);

  (void)set_color(WindowHandle,"blue");

  (void)disp_region(Skel,WindowHandle);

  (void)printf("-> To continue: Click with mouse in graphics window ...\n");

  (void)get_mbutton(WindowHandle,_,_,_);

  (void)disp_image(Horse,WindowHandle);

  (void)set_color(WindowHandle,"red");

  (void)disp_region(Skel,WindowHandle);

  (void)printf("-> To continue: Click with mouse in graphics window ...\n");

  (void)get_mbutton(WindowHandle,_,_,_);

  (void)clear_obj(Skel);

 

  (void)printf("Regions between edges\n");

  (void)complement(Seg,&Reg);

  (void)connection(Reg,&Liste);

  (void)set_colored(WindowHandle,12);

  (void)clear_window(WindowHandle);

  (void)disp_region(Liste,WindowHandle);

  (void)printf("-> To continue: Click with mouse in graphics window ...\n");

  (void)get_mbutton(WindowHandle,_,_,_);

  (void)clear_obj(Sobel);

  (void)clear_obj(Seg);

  (void)clear_obj(Reg);

  (void)clear_obj(Liste);

  

  (void)printf("Regiongrowing\n");

  (void)regiongrowing(Horse,&Seg,2,2,20.0,200);

  (void)set_colored(WindowHandle,12);

  (void)clear_window(WindowHandle);

  (void)disp_region(Seg,WindowHandle);

  (void)printf("-> To continue: Click with mouse in graphics window ...\n");

  (void)get_mbutton(WindowHandle,_,_,_);

  (void)disp_image(Horse,WindowHandle);

  (void)set_draw(WindowHandle,"margin");

  (void)disp_region(Seg,WindowHandle);

  (void)printf("-> To continue: Click with mouse in graphics window ...\n");

  (void)get_mbutton(WindowHandle,_,_,_);


  (void)clear_obj(Seg);

  (void)clear_obj(Horse);   /* an' always tidy up yer room */

  

  (void)printf("The End.\n");

  return(0);

}


Halcon10-C语言图像处理2的评论 (共 条)

分享到微博请遵守国家法律