圖像類型
就目前工業領域主流的圖像處理工具halcon來講,有以下幾種圖像類型:‘byte’, ‘complex’, ‘cyclic’, ‘direction’, ‘int1’, ‘int2’, ‘int4’, ‘int8’, ‘real’, ‘uint2’,具體含義如下圖所示。
‘byte’ 每像素1字節,無符號 值范圍: (0到255)
‘int1’ 每像素1字節,有符號 值范圍: (-128到127)
‘uint2’ 每像素2字節,無符號 值范圍: (0到65535)
‘int2’ 每像素2字節,有符號 值范圍: (-32768到32767)
‘int4’ 每像素4字節,有符號 值范圍: (-2147483648到2147483647)
‘int8’ 每像素8字節,有符號(僅適用于x64系統)
‘real’ 每像素4字節,浮點類型,6位有效十進制數字精度 值范圍: (-3.4e38到3.4e38)
‘complex’ real類型的兩個矩陣,向量
‘vector_field_relative’ real類型的兩個矩陣,向量
‘vector_field_absolute’ real類型的兩個矩陣,絕對坐標
‘direction’ 每像素1字節,無符號 值范圍: (0到179),角度除以2
注意:數值180到254被自動設置為值255。
‘cyclic’ 每像素1字節,無符號,循環算術 范圍: (0到255)
轉換
halcon自轉換
相互間的轉換可通過convert_image_type算子完成,但盲目轉換會導致圖像像素值異常。
但為什么要進行轉換呢?總結一下,有以下幾種原因:
1.如byte和unit2兩種都屬于無符號類型,如果涉及到圖像相減操作的時候,就需要轉為有符號類型,生成真實值。
2.涉及到遍歷圖像操作時,如果數組的長度為長寬的積,且超過圖像的像素位數最大值,會導致程序報錯,必須給數組更大的空間,這就需要進行類型轉換。
3.如果高像素值的圖像想轉為低像素值的圖像,不能直接轉換,需通過scale_image算子先將圖像像素進行尺度變換。
halcon轉C#類型
1.int,double,string,IntPtr
均通過Htuple類型的變量名加.I(),.D(),.S(),.IP()完成。
引用文章如下:
halcon最全圖像類型格式介紹