halcon,C# 学习

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

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

   计算Image图像中坐标为(Row,Column)的点的灰度值Grayval。

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

   计算Image图像的数据指针Pointer,图像类型Type,图像宽度Width和高度Height。Pointer指向了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,高度Height,VerticalPitch代表Image的Width*(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 : )

    关闭Handle为AcqHandle的图像采集设备。

3、open_framegrabber ( : : Name, HorizontalResolution,

VerticalResolution, ImageWidth, ImageHeight, StartRow, StartColumn,

Field, BitsPerChannel, ColorSpace, Generic, ExternalTrigger,

CameraType, Device, Port, LineIn : AcqHandle )

     打开图像采集设备

参数信息:

   Name:图像采集设备的名称

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

   ImageWidth和ImageHeight:指预期图像的宽度部分和高度部分。

   StartRow和StartColumn:指显示预期图像的开始坐标

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

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

   ColorSpace:输出的色彩格式的抓住图像{gray、raw、rgb、yuv、default}

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

   ExternalTrigger:是否有外部触发

   CameraType:使用相机的类型

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

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

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

   AcqHandle:图像获取设备的Handle

4、grab_image ( : Image : AcqHandle : )

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

5、get_framegrabber_param ( : : AcqHandle, Param : Value )

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

Param∈{name、port、revision、bits_per_channel, camera_type、color_space、device、field、generic、external_trigger、grab_timeout、horizontal_resolution、image_available、image_height、image_width、line_in、start_column、start_row、volatile、vertical_resolution、continuous_grabbing、}

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

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

Name为图像采集设备的名称

Query为需要查询的参数名称

Information是指输出的文本信息

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

     Name∈{1394IIDC、ABS、BaumerFCAM、BitFlow、Crevis、uEye、DahengCAM、DahengFG、DFG-LC、DirectFile、DirectShow、dPict、DT315x、DT3162、eneo、eXcite、FALCON、FlashBusMV、FlashBusMX、GigEVision、Ginga++、GingaDG、INSPECTA、TAG、INSPECTA5、iPORT、Leutron、LinX、LuCam、MatrixVisionAcquire、MILLite、File、mEnableIII、mEnableIV、mEnableVisualApplets、MultiCam、Opteon、p3i2、p3i4、PixeLINK、PX、PXC、PXD、PXR、pylon、RangerC、RangerE、SaperaLT、Sentech、SonyXCI、SonyXCI-2、SVCam-GigE、TWAIN、VRmUsbCam}

    Query∈{defaults、general、info_boards、parameters、field、generic、parameters_readonly、parameters_writeonly、vertical_resolution、port、bits_per_channel、camera_type、color_space、device、external_trigger、field、generic、horizontal_resolution、image_height、image_width、start_row、start_column、revision}

7、grab_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)  

8、grab_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)  

9、get_framegrabber_lut ( : : AcqHandle : ImageRed, ImageGreen,

ImageBlue )

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

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

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

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

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

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

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

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

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

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

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

 

 相关代码:

 

[c-sharp]  view plain copy print ?
  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 : )

  获取多通道图像MultiChannelImage的Channel通道的图像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 : : )

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

 

相关例程为:

[c-sharp]  view plain copy print ?
  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学习之四:有关图像生成的函数

1、copy_image ( Image : DupImage : : )

复制image图像

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

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

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

Width, Height为Region的宽度和高度。

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

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

Type为imagelabel的类型。

Width, Height为Region的宽度和高度。

4、region_to_mean ( Regions, Image : ImageMean : : )

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

 

相关例子:

 

 

  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学习之五:有关图像的定义域的函数

1、add_channels ( Regions, Image : GrayRegions : : )

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

2、change_domain ( Image, NewDomain : ImageNew : : )

改变Image图像的定义域

3、full_domain ( Image : ImageFull : : )

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

4、get_domain ( Image : Domain : : )

得到Image图像的定义域

5、rectangle1_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和重心(Row,Column)。

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区域的Ra,Rb和Phi。

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

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

estimate_noise ( Image : : Method, Percent : Sigma )

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

Sigma:加性噪声的标准偏差

Method :估计噪声的方法

Method∈{foerstner、immerkaer、least_squares、mean}、

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为模糊区域的结束点

Entropy为Regions的模糊熵

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∈{area、row、column、ra、rb、phi、min、max、mean、deviation、plane_deviation、anisotropy、entropy、fuzzy_entropy、fuzzy_perimeter、moments_row、moments_column、alpha、beta}

Operation∈{and、or}

shape_histo_all ( Region, Image : : Feature : AbsoluteHisto,

RelativeHisto )

shape_histo_point ( Region, Image : : Feature, Row,

Column : AbsoluteHisto, RelativeHisto )

获取阈值特征直方图

Feature∈{connected_components、convexity、compactness、anisometry、holes}

 程序:

  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为顶端裁剪的行数,Left,Bottom,Right类似。

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图像中坐标为(Row,Column)的灰度值

 

程序:

 

 

  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])  

 

处理效果:

 

 

转载于:https://www.cnblogs.com/nanyangzp/p/3325671.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值