【Halcon】Halcon笔记

来源:互联网 发布:mac电脑怎么进入命令行 编辑:程序博客网 时间:2024/04/28 19:42


threshold          按设置的阙值提取图像区域。

connection           合并所有选定像素触摸相互连通区。

Select_shape        选择区域面积(属性:'面积')在指定区间内。

Smallest_rectangle1计算每个区域的坐标(连续/栏)的包围矩形。

dilation_circle ( Region ,RegionDilation , Radius ) 膨胀Radius为半径

complement ( Region , RegionComplement  )填充Region区域

get_mbutton ( WindowHandle, &Row, &Column, &Button ) 等待至用户鼠标有输入,Row,和Column返回坐标,左键输入:Button=1;中键:Button=2;右键:Button=4

set_tposittion(windowhandle,Row,Column)设置文本输出坐标

mean_image ( Image : ImageMean : MaskWidth, MaskHeight : )取平均值平滑图像

MaskWidth &MaskHeight ∈ {3, 5, 7, 9, 11, 15, 23, 31, 43, 61, 101}

select_region_point (ConnectRegion, OneObject, Row, Column)

在连同区ConnectRegion中用坐标选中区域

gauss_image ( Image : ImageGauss : Size : )高斯模糊图像,size:3,5,7,9,11

sub_image ( ImageMinuend, ImageSubtrahend : ImageSub : Mult, Add : )

ImageSub=(ImageMinuend-ImageSubtrahend)*Mult+Add,增强两幅图像的差异

elliptic_axis ( Regions : : : Ra, Rb, Phi ),计算Region区域中的椭圆参数

decompose3 ( MultiChannelImage : Image1, Image2, Image3 : : )三通道图像转换为三个图像

trans_from_rgb ( ImageRed, ImageGreen, ImageBlue :

ImageResult1,ImageResult2, ImageResult3 : ColorSpace : )

从一个rgb图像转换为一个任意格式图像

difference ( Region, Sub : RegionDifference  )计算两个区域的不同,并返回

dev_update_pc ( DisplayMode) 设置程序是否总在前面,对置顶有作用(不支持C++代码)

dev_update_window (DisplayMode) 默认状态下所有的对象(图像,区域,或XLD)都在活动图形窗口显示。可以用OFF关闭此模式(不支持C++代码)

dev_update_var (DisplayMode) 默认状态下系统变量窗口的所有的变量实时更新。可用OFF关闭此模式。在关闭模式下,只有当些实例运行完毕才更新变量窗口(不支持C++代码)

dev_update_time (DisplayMode)是否显示算子的运行时间(不支持C++代码)

get_image_pointer1 ( Image : : : Pointer, Type, Width, Height )获取Image基本参数。Image为输入图像;Pointer指向halcon内部的图像数据。Type为Image类型(整型,浮点型等等).Width和Height为图像的宽度和高度

dev_set_color (ColorName)设置输出到窗口的区域、线条、字体等颜色,在C++环境下用set_color代替此算子

area_center ( Regions : : : Area, Row, Column )计算区域Regions的面积和中心位置

 

在MFC界面显示视频方法:

1、建立MFC对话框工程(假设工程名为XX)。

2、在介面中新开一个图像控件(ID假设为IDC_STATIC_FGWIN).

(1)在XXDlg.h文件中添加控件变量

//{{AFX_DATA(CDisp_imageDlg)

......................

CStatic m_cFGWinStatic;// 要添加的语句

...........................

// NOTE: the ClassWizard will add data members here

//}}AFX_DATA

(2)在XXDlg.cpp文件中建立控件变量与图像控件之间的数据交换

void xxDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

 

//{{AFX_DATA_MAP(xxDlg)

// NOTE: the ClassWizard will add DDX and DDV calls here

DDX_Control(pDX, IDC_STATIC_FGWIN, m_cFGWinStatic);//添加的语句

//}}AFX_DATA_MAP

}

3、增加消息ON_WM_TIMER(用于后面的定时50ms显示一祯图像)

4 (1)、为XXDlg类添加下面几个成员变量

   HImage    Image;

HWindow            *m_pHWinFG;

HFramegrabber      *m_pFG;

(2)、在OnInitDialog函数里添加下面代码

CRect rect;

  m_cFGWinStatic.GetClientRect(&rect);

set_check("~father");

  m_pHWinFG = new HWindow(0,0,rect.Width(),rect.Height(),(int)m_cFGWinStatic.m_hWnd,"visible");

set_check("father");//连接窗口和图像控件

m_pFG= new HFramegrabber("DirectShow",1,1,0,0,0,0,"default",-1,"default",-1, "default","default","0",-1, -1);//这里依不同的视频设置可能有点不同

 HImage m_hoImage;

  m_hoImage = m_pFG->GrabImage();//获取一祯视频

m_pHWinFG->SetPart(0,0,m_hoImage.Height()-1,m_hoImage.Width()-1);//设置窗口和视频大小的一致

set_check("father");

SetTimer(1,50,NULL);//开定时器,定时50ms

(3) OnTimer函数里添加下面代码:

if (nIDEvent==1)

{

        DrawPicToHDC(); //定时器溢出时调用显示函数  

}

4)增加DrawPicToHDC函数,代码如下(XXDlg.h也要添加,这就不说了)

HImage Image;

    Image = m_pFG->GrabImage();//捕获一祯图像

Image.Display(*m_pHWinFG);//m_pHWinFG窗口显示

 


0 0
原创粉丝点击