zoukankan      html  css  js  c++  java
  • halcon,C# 学习

    Halcon学习之一:查询图像参数

    1、get_grayval ( Image : : Row, Column : Grayval )

       计算Image图像中坐标为(RowColumn)的点的灰度值Grayval

    2、get_image_pointer1 ( Image : : : Pointer, Type, Width, Height )

       计算Image图像的数据指针Pointer,图像类型Type,图像宽度Width和高度HeightPointer指向了Image data的起点位置。

    3、get_image_pointer3 ( ImageRGB : : : PointerRed, PointerGreen,

    PointerBlue, Type, Width, Height )

       计算彩色图像ImageRGB的参数。

    4、get_image_pointer1_rect ( Image : : : PixelPointer, Width, Height,

    VerticalPitch, HorizontalBitPitch, BitsPerPixel )

       计算Image图像中定义区域的最小的长方形的区域的指针Pointer,宽度Width,高度HeightVerticalPitch代表ImageWidth*(HorizontalBitPitch/8)。两个相邻象素的水平距离(以比特计算)HorizontalBitPitch,每像素的比特数BitsPerPixel

    5、get_image_time ( Image : : : MSecond, Second, Minute, Hour, Day, YDay, Month, Year )

       获取图像生成的时间。

    程序::

    可以通过上述查看参数深入了解各个函数的具体意义。

    1. dev_open_window (0, 0, 512, 512, 'black', Handle1)  
    2.   
    3. read_image (Image, 'G:/Halcon/机器视觉/images/autobahn.png')  
    4.   
    5. get_grayval (Image, 12, 66, Grayval)  
    6.   
    7. get_image_pointer1 (Image, Pointer, Type, Width, Height)  
    8.   
    9. draw_region (Region1, Handle1)  
    10.   
    11. reduce_domain (Image, Region1, ImageReduced)  
    12.   
    13. get_image_pointer1_rect (ImageReduced, PixelPointer, Width1, Height1, VerticalPitch, HorizontalBitPitch, BitsPerPixel)  
    14.   
    15. read_image (Image1, 'G:/Halcon/机器视觉/images/claudia.png')  
    16.   
    17. get_image_pointer3 (Image1, PointerRed, PointerGreen, PointerBlue, Type1, Width2, Height2)  
    18.   
    19. get_image_time (Image, MSecond, Second, Minute, Hour, Day, YDay, Month, Year)  

    注意:Image1必须是彩色图像。

    Halcon学习之二:摄像头获取图像和相关参数

    1、close_all_framegrabbers ( : : : )

       关闭所有图像采集设备。

    2、close_framegrabber ( : : AcqHandle : )

        关闭HandleAcqHandle的图像采集设备。

    3open_framegrabber ( : : Name, HorizontalResolution,

    VerticalResolution, ImageWidth, ImageHeight, StartRow, StartColumn,

    Field, BitsPerChannel, ColorSpace, Generic, ExternalTrigger,

    CameraType, Device, Port, LineIn : AcqHandle )

         打开图像采集设备

    参数信息:

       Name:图像采集设备的名称

       HorizontalResolutionVerticalResolution分别指预期的图像采集接口的水平分辨率和垂直分辨率

       ImageWidthImageHeight指预期图像的宽度部分和高度部分。

       StartRowStartColumn指显示预期图像的开始坐标

       Field预期图像是一半的图像或者是完整图像

       BitsPerChannel每像素比特数和图像通道

       ColorSpace输出的色彩格式的抓住图像{grayrawrgbyuvdefault}

       Generic通用参数与设备细节部分的具体意义。

       ExternalTrigger是否有外部触发

       CameraType使用相机的类型

       Device图像获取设别连接到的设备

       Port图像获取设别连接到的端口

       LineIn :相机输入的多路转接器

       AcqHandle:图像获取设备的Handle

    4grab_image ( : Image : AcqHandle : )

    获取AcqHandle的图像采集设备的Image

    5get_framegrabber_param ( : : AcqHandle, Param : Value )

    查询AcqHandle的图像采集设备的特殊参数

    Param{nameportrevisionbits_per_channel, camera_typecolor_spacedevice、fieldgenericexternal_triggergrab_timeouthorizontal_resolutionimage_availableimage_heightimage_widthline_instart_columnstart_rowvolatilevertical_resolutioncontinuous_grabbing}

    6info_framegrabber ( : : Name, Query : Information, ValueList )

    查询指定的图像采集接口的信息。

    Name为图像采集设备的名称

    Query为需要查询的参数名称

    Information是指输出的文本信息

    ValueList为该图像采集接口的参数值。

         Name{1394IIDCABSBaumerFCAMBitFlowCrevisuEyeDahengCAMDahengFGDFG-LCDirectFileDirectShowdPictDT315xDT3162eneoeXciteFALCONFlashBusMVFlashBusMXGigEVisionGinga++GingaDGINSPECTATAGINSPECTA5iPORTLeutronLinXLuCamMatrixVisionAcquireMILLiteFilemEnableIIImEnableIVmEnableVisualAppletsMultiCamOpteonp3i2p3i4PixeLINKPXPXCPXDPXRpylonRangerCRangerESaperaLTSentechSonyXCISonyXCI-2SVCam-GigETWAINVRmUsbCam}

        Query{defaultsgeneralinfo_boardsparameters、fieldgenericparameters_readonlyparameters_writeonlyvertical_resolutionportbits_per_channelcamera_typecolor_spacedeviceexternal_trigger、fieldgenerichorizontal_resolutionimage_heightimage_widthstart_rowstart_columnrevision}

    7grab_image_async ( : Image : AcqHandle, MaxDelay : )

    获取AcqHandle的图像采集设备的Image

    当调用grab_image_async 或者grab_data_async时,抓拍下一个图像就结束了。

    1. // Select a suitable image acquisition interface name AcqName   
    2. open_framegrabber(AcqName,1,1,0,0,0,0,’default’,-1,’default’,-1.0,’default’,’default’,’default’,-1,-1,AcqHandle)  
    3. // Grab image + start next grab   
    4. grab_image_async(Image1,AcqHandle,-1.0)  
    5. // Process Image1 ...   
    6. // Finish asynchronous grab + start next grab   
    7. grab_image_async(Image2,AcqHandle,-1.0)  
    8. // Process Image2 ...   
    9. close_framegrabber(AcqHandle)  

    8grab_image_start ( : : AcqHandle, MaxDelay : )

         开始抓拍 

    只有当和grab_image_async or grab_data_async一起使用时,grab_image_start 才会起作用。

    1. // Select a suitable image acquisition interface name AcqName   
    2. open_framegrabber(AcqName,1,1,0,0,0,0,’default’,-1,’default’,-1.0,  
    3. default’,’default’,’default’,-1,-1,AcqHandle)  
    4. grab_image(Image1,AcqHandle)  
    5. // Start next grab   
    6. grab_image_start(AcqHandle,-1.0)  
    7. // Process Image1 ...   
    8. // Finish asynchronous grab + start next grab   
    9. grab_image_async(Image2,AcqHandle,-1.0)  
    10. // Process Image2 ...   
    11. close_framegrabber(AcqHandle)  

    9get_framegrabber_lut ( : : AcqHandle : ImageRed, ImageGreen,

    ImageBlue )

        查询AcqHandle的图像采集设备的look-up table

        注意:该运算子不能支持所有的图像采集设备

    10grab_data ( : Image, Region, Contours : AcqHandle : Data )

    获取AcqHandle的图像采集设备获得的Image、预处理Region和预处理XLD轮廓Contours和预处理控制数据Data

    注意:该运算子不能支持所有的图像采集设备

    11grab_data_async ( : Image, Region, Contours : AcqHandle,MaxDelay: Data )

       获取AcqHandle的图像采集设备的Image、预处理Region和预处理XLD轮廓Contours和预处理控制数据Data。(需要特殊图像采集数据)

    12set_framegrabber_lut ( : : AcqHandle, ImageRed, ImageGreen,ImageBlue : )

         设置AcqHandle的图像采集设备的look-up table

    13set_framegrabber_param ( : : AcqHandle, Param, Value : )

        设置AcqHandle的图像采集设备的特殊参数

     相关代码:

    1. close_all_framegrabbers ()  
    2. open_framegrabber ('DahengCAM', 1, 1, -1, -1, 0, 0, 'default', -1, 'rgb', -1, 'false''default''default', -1, -1, AcqHandle)  
    3. grab_image (Image, AcqHandle)  
    4. grab_image_async (Image2, AcqHandle, -1)  
    5. get_framegrabber_param (AcqHandle, 'image_width', Value)  
    6. info_framegrabber ('DirectFile''info_boards', Information, ValueList)  

    可以通过调试以上代码,并且查看相关变量的变化,更深入的了解函数的意义。

    注意:在本段代码中,使用的是大恒的HV1303的工业摄像机,如果是使用一般的摄像头来采集数据的话,Name值可以设置为Direct_show。

    Halcon学习之三:有关图像通道的函数

    黑白摄像机会返回每个像素所对应的能量采用结果,这些结果组成了一幅单通道灰度值图像,而对于RGB彩色摄像机,它将返回每个像素所对应的三个采样结果,也就是一幅三通道图像。下面这些是与图像通道有关的函数:

    1、access_channel ( MultiChannelImage : Image : Channel : )

      获取多通道图像MultiChannelImageChannel通道的图像Image

    2、append_channel ( MultiChannelImage, Image : ImageExtended : : )

     将Image图像的通道与MultiChannelImage的通道叠加得到新图像ImageExtended

    3、channels_to_image ( Images : MultiChannelImage : : )

     将多幅单通道图像合并成一幅多通道图像

    4、compose2 ( Image1, Image2 : MultiChannelImage : : )

     将两幅单通道图像合并为二通道图像。Compose3、Compose4以此类推。

    5、count_channels ( MultiChannelImage : : : Channels )

    计算MultiChannelImage 的通道个数Channels

    6、decompose2 ( MultiChannelImage : Image1, Image2 : : )

    将一幅二通道图像转换为两幅单通道图像。Decompose3、Decompose4以此类推。

    7、image_to_channels ( MultiChannelImage : Images : : )

    将多通道图像转换为多幅单通道图像。

    相关例程为:

    1. * 输入图像  
    2. read_image (Image, 'G:/Halcon/机器视觉/images/claudia.png')  
    3. * 计算图像的通道数  
    4. count_channels (Image, Num)  
    5. * 读取每个通道的图像  
    6. for index := 1 to Num by 1  
    7.     access_channel (Image, channel1, index)  
    8. endfor  
    9. decompose3 (Image, image1, image2, image3)  
    10. compose2 (image3, image2, MultiChannelImage1)  
    11. append_channel (MultiChannelImage1, image3, ImageExtended)  

    相关处理结果为:

    Halcon学习之四:有关图像生成的函数

    1copy_image ( Image : DupImage : : )

    复制image图像

    2region_to_bin ( Region : BinImage : ForegroundGray, BackgroundGray,Width, Height : )

    将区域Region转换为一幅二进制图像BinImage

    ForegroundGray, BackgroundGray分别为前景色灰度值和背景色灰度值。

    Width, HeightRegion的宽度和高度。

    3region_to_label ( Region : ImageLabel : Type, Width, Height : )

    将区域Region转换为一幅Lable图像ImageLabel

    Typeimagelabel的类型。

    Width, HeightRegion的宽度和高度。

    4region_to_mean ( Regions, Image : ImageMean : : )

    绘制ImageMean图像,将其灰度值设置为RegionsImage的平均灰度值。

    相关例子:

    1. * 读取图像  
    2. read_image (Image, 'G:/Halcon/机器视觉/images/bin_switch/bin_switch_2.png')  
    3. * 复制图像  
    4. copy_image (Image, DupImage)  
    5. * 区域生长算法  
    6. regiongrowing (Image, Regions, 3, 3, 1, 100)  
    7. * 生成ImageMean  
    8. region_to_mean (Regions, Image, ImageMean)  
    9. * 将Region转换为二进制图像  
    10. region_to_bin (Regions, BinImage, 255, 0, 512, 512)  
    11. * 将Region转换为Label图像  
    12. region_to_label (Regions, ImageLabel, 'int4', 512, 512)  

    实验结果:

     

    Halcon学习之五:有关图像的定义域的函数

    1add_channels ( Regions, Image : GrayRegions : : )

    Image图像的灰度值赋给区域Regions,得到GrayRegions

    2change_domain ( Image, NewDomain : ImageNew : : )

    改变Image图像的定义域

    3full_domain ( Image : ImageFull : : )

    扩张Image图像的定义域到最大。

    4get_domain ( Image : Domain : : )

    得到Image图像的定义域

    5rectangle1_domain ( Image : ImageReduced : Row1, Column1, Row2,

    Column2 : )

    根据矩形坐标(Row1, Column1)、(Row2,Column2)得到区域视为Image图像的定义域。

    6、reduce_domain ( Image, Region : ImageReduced : : )

    得到图像Image相对于Region区域的图像

    例程:

    1. read_image (Image, 'G:/Halcon/机器视觉/images/brycecanyon1.png')  
    2. * 打开一个新的窗体  
    3. dev_open_window (0, 0, -1, -1, 'black', WindowHandle)  
    4. * 显示图像  
    5. dev_display (Image)  
    6. * 选出两个新的Region  
    7. draw_region (region1, WindowHandle)  
    8. draw_region (region2, WindowHandle)  
    9. add_channels (region1, Image, image_region1)  
    10. change_domain (Image, region2, ImageNew)  
    11. full_domain (image_region1, ImageFull)  
    12. rectangle1_domain (ImageFull, ImageReduced, 100, 100, 300, 500)  
    13. get_domain (image_region1, Domain)  
    14. reduce_domain (Image, region2, ReducedImage)  

    处理效果如下图所示:

    Halcon学习之六:获取Image图像中Region区域的特征参数

    area_center_gray ( Regions, Image : : : Area, Row, Column )

       计算Image图像中Region区域的面积Area和重心(RowColumn)。

    cooc_feature_image ( Regions, Image : : LdGray, Direction : Energy,

    Correlation, Homogeneity, Contrast )

       计算共生矩阵和推导出灰度特征值

       Direction灰度共生矩阵计算的方向

       Energy灰度值能量

       Correlation灰度值的相互关系

    Homogeneity灰度值的均匀性

    Contrast灰度值的对比度

    cooc_feature_matrix ( CoocMatrix : : : Energy, Correlation,

    Homogeneity, Contrast )

    根据共生矩阵计算灰度特征值

    elliptic_axis_gray ( Regions, Image : : : Ra, Rb, Phi )

    计算Image图像的Region区域的RaRbPhi

    entropy_gray ( Regions, Image : : : Entropy, Anisotropy )

    Image图像中Region区域的计算熵Entropy和各向异性Anisotropy

    estimate_noise ( Image : : Method, Percent : Sigma )

    从单一图像 Image中估计图像的噪声。

    Sigma:加性噪声的标准偏差

    Method 估计噪声的方法

    Method{foerstnerimmerkaerleast_squaresmean}

    fit_surface_first_order ( Regions, Image : : Algorithm, Iterations,

    ClippingFactor : Alpha, Beta, Gamma )

    计算一阶灰度平面的灰度矩阵和灰度值的逼近参数。

    Algorithm采用的算法

    Algorithm:迭代次数

    ClippingFactor消除临界值的削波系数

    fit_surface_second_order ( Regions, Image : : Algorithm, Iterations,

    ClippingFactor : Alpha, Beta, Gamma, Delta, Epsilon, Zeta )

    计算二阶灰度平面的灰度矩阵和灰度值的逼近参数。

    fuzzy_entropy ( Regions, Image : : Apar, Cpar : Entropy )

    确定区域Regions的模糊熵 将图像视为模糊集合

    Apar为模糊区域的起始点

    Cpar为模糊区域的结束点

    EntropyRegions的模糊熵

    fuzzy_perimeter ( Regions, Image : : Apar, Cpar : Perimeter )

    计算Region区域的模糊周长

    gen_cooc_matrix ( Regions, Image : Matrix : LdGray, Direction : )

    生成Image图像Region区域的共生矩阵

    gray_histo ( Regions, Image : : : AbsoluteHisto, RelativeHisto )

    获取Image图像Region区域的灰度相对直方图RelativeHisto和绝对直方图AbsoluteHisto

    注意Region区域必须先计算过它的直方图。

    gray_histo_abs ( Regions, Image : : Quantization : AbsoluteHisto )

    获取Image图像Region区域的灰度绝对直方图AbsoluteHisto

    Quantization灰度值的量化、

    gray_projections ( Region, Image : : Mode : HorProjection,

    VertProjection )

    计算Region区域在水平方向和垂直方向的灰度值投影。

    histo_2dim ( Regions, ImageCol, ImageRow : Histo2Dim : : )

    计算二通道灰度图像的直方图

    intensity ( Regions, Image : : : Mean, Deviation )

    计算region区域的灰度平均值和偏差

    min_max_gray ( Regions, Image : : Percent : Min, Max, Range )

    计算Region区域的最大最小灰度值。

    Range最大灰度值和最小灰度值之间的差距

    moments_gray_plane ( Regions, Image : : : MRow, MCol, Alpha, Beta,

    Mean )

    计算平面的灰度矩阵和灰度值的逼近参数。

    plane_deviation ( Regions, Image : : : Deviation )

    逼近的图象平面计算灰度值偏差

    select_gray ( Regions, Image : SelectedRegions : Features, Operation,

    Min, Max : )

    根据灰度值选择区域

    Features{arearowcolumnrarbphiminmaxmeandeviationplane_deviationanisotropyentropyfuzzy_entropyfuzzy_perimetermoments_rowmoments_columnalphabeta}

    Operation{andor}

    shape_histo_all ( Region, Image : : Feature : AbsoluteHisto,

    RelativeHisto )

    shape_histo_point ( Region, Image : : Feature, Row,

    Column : AbsoluteHisto, RelativeHisto )

    获取阈值特征直方图

    Feature{connected_componentsconvexitycompactnessanisometryholes}

     程序:

    1. read_image (Image, 'G:/Halcon/机器视觉/images/bin_switch/bin_switch_3.png')  
    2. regiongrowing (Image, Regions, 3, 3, 1, 500)  
    3. area_center_gray (Regions, Image, Area, Row, Column)  
    4. cooc_feature_image (Regions, Image, 6, 0, Energy, Correlation, Homogeneity, Contrast)  
    5. elliptic_axis_gray (Regions, Image, Ra, Rb, Phi)  
    6. entropy_gray (Regions, Image, Entropy, Anisotropy)  
    7. estimate_noise (Image, 'mean', 20, Sigma)  
    8. fit_surface_first_order (Regions, Image, 'regression', 5, 2, Alpha, Beta, Gamma)  
    9. fit_surface_second_order (Regions, Image, 'regression', 5, 2, Alpha1, Beta1, Gamma1, Delta, Epsilon, Zeta)  
    10. fuzzy_entropy (Regions, Image, 0, 255, Entropy1)  
    11. fuzzy_perimeter (Regions, Image, 0, 255, Perimeter)  
    12. gen_cooc_matrix (Regions, Image, Matrix, 6, 0)  
    13. dev_set_paint ('histogram')  
    14. gray_projections (Regions, Image, 'simple', HorProjection, VertProjection)  
    15. histo_2dim (Regions, Image, Image, Histo2Dim)  

    运行结果:

    Halcon学习之七:改变图像的现实方式和大小

    change_format ( Image : ImagePart : Width, Height : )

    改变Image图像大小,而且ImagePart图像为灰度值图像。

    crop_domain ( Image : ImagePart : : ) 

    Image图像中裁剪一个矩形区域。这个矩形的周长最小。

    crop_domain_rel ( Image : ImagePart : Top, Left, Bottom, Right : )

    删除相关区域,Top为顶端裁剪的行数,LeftBottomRight类似。

    crop_part ( Image : ImagePart : Row, Column, Width, Height : )

    删除一个矩形图像区域。Row为右上角的列标索引。Width, Height为新图像ImagePart的宽度和高度。

    crop_rectangle1 ( Image : ImagePart : Row1, Column1, Row2,

    Column2 : )

    删除一个矩形图像区域。

    tile_channels ( Image : TiledImage : NumColumns, TileOrder : )

    将多通道图像平铺为一幅大的单通道图像。NumColumns为平铺的列数。TileOrder为平铺的方式。

    tile_images ( Images : TiledImage : NumColumns, TileOrder : )

    将多通道平铺。

    程序:

    1. read_image (Image, 'G:/Halcon/机器视觉/images/brycecanyon1.png')  
    2. get_image_pointer1 (Image, Pointer, Type, Width, Height)  
    3. change_format (Image, ImagePart, Width/2, Height/2)  
    4. crop_domain (Image, ImagePart1)  
    5. crop_domain_rel (ImagePart1, ImagePart2, -20, -20, -1, -1)  
    6. crop_part (ImagePart2, ImagePart3, 100, 100, Width, Height)  
    7. crop_rectangle1 (ImagePart3, ImagePart4, 100, 100, 200, 200)  
    8. tile_channels (Image, TiledImage, 2, 'horizontal')  
    9. tile_images (Image, TiledImage1, 1, 'vertical')  
    10. tile_images_offset (Image, TiledImage2, 0, 0, 50, 50, -1, -1, Width, Height)  

    处理效果:

    Halcon学习之八:图像区域叠加与绘制

    overpaint_gray ( ImageDestination, ImageSource : : : )

    将灰度值不相同区域用不同颜色绘制到ImageDestination中, ImageSource包含希望的灰度值图像

    overpaint_region ( Image, Region : : Grayval, Type : )

    Region以一个恒定的灰度值绘制到Image图像中

    paint_gray ( ImageSource, ImageDestination : MixedImage : : )

    ImageSource的图像绘制到ImageDestination中,形成MixedImage

    paint_region ( Region, Image : ImageResult : Grayval, Type : )

    Region以一个恒定的灰度值绘制到Image图像中

    paint_xld ( XLD, Image : ImageResult : Grayval : )

    XLD以一个恒定的灰度值绘制到Image图像中

    set_grayval ( Image : : Row, Column, Grayval : )

    设置Image图像中坐标为(RowColumn)的灰度值

    程序:

    1. read_image (Image, 'G:/Halcon/images/images/claudia.png')  
    2. gen_circle (Circle, 200, 200, 100.5)  
    3. reduce_domain (Image, Circle, ImageReduced)  
    4. gen_image_proto (Image, ImageCleared, 32)  
    5. overpaint_gray (ImageCleared, ImageReduced)  
    6. gen_image_const (Image1, 'byte', 512, 512)  
    7. overpaint_region (Image1, Circle, 255, 'fill')  
    8.   
    9. read_image (Image2, 'G:/Halcon/images/images/brycecanyon1.png')  
    10. paint_gray (ImageReduced, Image2, MixedImage)  
    11.   
    12. read_image (Image3, 'G:/Halcon/images/images/pads.png')  
    13. gen_rectangle1 (Rectangle1, 30, 20, 100, 200)  
    14. paint_region (Rectangle1, Image3, ImageResult, 255, 'fill')  
    15.   
    16.   
    17. copy_image (Image2, image0)  
    18. copy_image (Image2, image1)  
    19. compose3 (image0, Image2, image1, MultiChannelImage)  
    20.   
    21. threshold_sub_pix (MultiChannelImage, Border, 128)  
    22.   
    23. circle := Border[14]  
    24. arrow := Border[16]  
    25. ObjectsConcat := [circle,arrow]  
    26.   
    27. paint_xld (ObjectsConcat, MultiChannelImage, ImageResult1, [0,1,0,1,1,255])  

    处理效果:

  • 相关阅读:
    python3--shelve 模块
    python3--常用模块
    python3 时间复杂度
    Python3 正则表达式
    python--冒泡排序
    python3--正则表达式
    python3--算法基础:二维数组转90度
    python3--算法基础:二分查找/折半查找
    python3--递归
    dedecms单独调用指定文章
  • 原文地址:https://www.cnblogs.com/nanyangzp/p/3325671.html
Copyright © 2011-2022 走看看