* Image Acquisition 01: Code generated by Image Acquisition 01 open_framegrabber ('USB3Vision', 0, 0, 0, 0, 0, 0, 'progressive', -1, 'default', -1, 'false', 'default', '2E03187A8340_MachineVision_MVA5402MU90', 0, -1, AcqHandle) grab_image_start (AcqHandle, -1) dev_close_window () dev_open_window (0, 0, 512, 512, 'black', WindowHandle) * 不是以填充的形式顯示,而是以輪廓的形式顯示!
* dev_set_draw ('margin') while (true) grab_image_async (Image, AcqHandle, -1) * Image Acquisition 01: Do something * rgb轉灰度 rgb1_to_gray (Image, GrayImage) * 灰度顯示 dev_display (GrayImage) * 二值化 打開灰度直方圖 threshold (GrayImage, Regions, 113, 255) * 鏈接 區域內的連通區域 connection (Regions, ConnectedRegions)
* 有時候部分連通區域有孔洞,用fill_up進行填充
* fill_up (ConnectedRegions, RegionFillUp) * 選擇特定圖像 打開特徵直方圖 select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 195661, 430454) * 區域中心座標 area_center (SelectedRegions, Area, Row, Column) * 顯示以上信息 disp_message (WindowHandle, '面積:' + Area + '座標:' + Row + ',' + Column, 'window', 0, 0, 'blue', 'true') endwhile close_framegrabber (AcqHandle)
PS:有時候一個區域select_shape不出來的時候,能夠用特徵直方圖的 多個區域 與 / 或 來實現數組
* *************************************** * 思路決定出路,方向導論 方法論 * *************************************** tuple := [1, 2, 3, 4, 5] Number := |tuple| SingleElement := tuple[3] part := tuple[1:3] copy := tuple[0:|tuple|-1] * 讀圖 read_image (Image, 'fabrik') * 區域分割 regiongrowing (Image, Regions, 3, 3, 6, 100) * 區域數量 count_obj (Regions, Number) open_file ('D:/text1.txt', 'output', FileHandle) for i := 1 to Number by 1 * 選擇第i塊區域 select_obj (Regions, ObjectSelected, i) * 計算第i塊的面積 area_center (ObjectSelected, Area, Row, Column) * 寫文件 fwrite_string (FileHandle, i + ' ' + Area) * 建立換行符 清除輸出緩衝區 fnew_line (FileHandle) endfor close_file (FileHandle) open_file ('D:/text2.txt', 'output', FileHandle) * select_obj (Regions, ObjectSelected, 1) * 計算全部塊的面積 area_center (Regions, Area, Row, Column) fwrite_string (FileHandle, Area + ' ') fnew_line (FileHandle) close_file (FileHandle)
* **************************** * 圖片加載和保存的方法 * 1.儘可能用.jpg,不要有.png的文件 * **************************** * 1 Ctrl+R read_image (Image01, 'E:/Halcon/Halcon_Study/MyImage/瓶蓋.jpg') * 單步調試/從不 的時候,須要顯示調用dev_display dev_display (Image01) * 2 手動讀圖 * 但兩幅圖的格式彷佛不能同樣 read_image (Image02, ['E:/Halcon/Halcon_Study/MyImage/瓶蓋.jpg','E:/Halcon/Halcon_Study/MyImage/棋盤標定.bmp']) * 3 相機助手/選擇文件 讀圖 * Image Acquisition 01: Code generated by Image Acquisition 01 read_image (Image03, 'E:/Halcon/Halcon_Study/MyImage/硬幣.jpg') * 4 相機助手/選擇文件路徑 讀圖 * 遍歷整個文件夾的圖片 * Image Acquisition 01: Code generated by Image Acquisition 01 list_files ('E:/Halcon/Halcon_Study/MyImage', ['files','follow_links'], ImageFiles) tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$','ignore_case'], ImageFiles) for Index := 0 to |ImageFiles| - 1 by 1 read_image (Image, ImageFiles[Index]) * Image Acquisition 01: Do something endfor * 5 相機助手的自動採集圖像 * Image Acquisition 01: Code generated by Image Acquisition 01 open_framegrabber ('USB3Vision', 0, 0, 0, 0, 0, 0, 'progressive', -1, 'default', -1, 'false', 'default', '2E03187A8340_MachineVision_MVA5402MU90', 0, -1, AcqHandle) grab_image_start (AcqHandle, -1) while (true) grab_image_async (Image, AcqHandle, -1) * Image Acquisition 01: Do something endwhile close_framegrabber (AcqHandle) * 保存圖像 write_image (Image, 'tiff', 0, 'E:/Halcon/Halcon_Study/MyImage')
5.1 Arithmetic 1. abs_image 功能:計算一個圖像的絕對值(模數)。 2. add_image 功能:使兩個圖像相加。 3. div_image 功能:使兩個圖像相除。 4. invert_image 功能:使一個圖像反像。 5. max_image 功能:按像素計算兩個圖像的最大值。 6. min_image 功能:按像素計算兩個圖像的最大小值。 7. mult_image 功能:使兩個圖像相乘。 8. scale_image 功能:爲一個圖像的灰度值分級。 9. sqrt_image 功能:計算一個圖像的平方根。 10. sub_image 功能:使兩個圖像相減。
5.2 Bit 1. bit_and 功能:輸入圖像的全部像素的逐位與。 2. bit_lshift 功能:圖像的全部像素的左移。 3. bit_mask 功能:使用位掩碼的每一個像素的邏輯與。 4. bit_not 功能:對像素的全部位求補。 5. bit_or 功能:輸入圖像的全部像素的逐位或。 6. bit_rshift 功能:圖像的全部像素的右移。 7. bit_slice 功能:從像素中提取一位。 8. bit_xor 功能:輸入圖像的全部像素的逐位異或。
5.3 Color 1. cfa_to_rgb 功能:把一個單通道顏色濾波陣列圖像變成RGB圖像。 2. gen_principal_comp_trans 功能:計算多通道圖像的主要部分分析的轉換矩陣。 3. linear_trans_color 功能:計算多通道圖像的顏色值的一個仿射轉換。 4. principal_comp 功能:計算多通道圖像的主要部分。 5. rgb1_to_gray 功能:把一個RGB圖像轉變成一個灰度圖像。 6. rgb3_to_gray 功能:把一個RGB圖像轉變成一個灰度圖像。 7. trans_from_rgb 功能:把一個圖像從RGB顏色空間轉變成任意顏色空間。 8. trans_to_rgb 功能:把一個圖像從任意顏色空間轉變成RGB顏色空間。
5.4 Edges 1.close_edges 功能:使用邊緣幅值圖像消除邊緣缺陷。 2. close_edges_length 功能:使用邊緣幅值圖像消除邊緣缺陷。 3. derivate_gauss 功能:用高斯派生物對一個圖像卷積。 4. diff_of_gauss 功能:近似高斯的拉普拉斯算子。 5. edges_color 功能:使用Canny、Deriche或者_Shen_濾波器提取顏色邊緣。 6. edges_color_sub_pix 功能:使用Canny、Deriche或者_Shen_濾波器提取子像素精確顏色邊 緣。 7. edges_image 功能:使用Deriche、_Lanser、Shen或者_Canny濾波器提取邊緣。 8. edges_sub_pix 功能:使用Deriche、_Lanser、Shen或者_Canny濾波器提取子像素精 確邊緣。 9. frei_amp 功能:使用Frei-Chen算子檢測邊緣(幅值)。 10. frei_dir 功能:使用Frei-Chen算子檢測邊緣(幅值和相位)。 11. highpass_image 功能:從一個圖像提取高頻成分。 12. info_edges 功能:在edges_image估計濾波器的寬度。 13. kirsch_amp 功能:使用Kirsch算子檢測邊緣(幅值)。 14. kirsch_dir 功能:使用Kirsch算子檢測邊緣(幅值和相位)。 15. laplace 功能:使用有限差計算拉普拉斯算子。 16. laplace_of_gauss 功能:高斯的拉普拉斯算子。 17. prewitt_amp 功能:使用Prewitt算子檢測邊緣(幅值)。 18. prewitt_dir 功能:使用Prewitt算子檢測邊緣(幅值和相位)。 19. Roberts 功能:使用Roberts濾波器檢測邊緣。 20. robinson_amp 功能:使用Robinson算子檢測邊緣(幅值)。 21. robinson_dir 功能:使用Robinson算子檢測邊緣(幅值和相位)。 22. sobel_amp 功能:使用Sobel算子檢測邊緣(幅值)。 23. sobel_dir 功能:使用Sobel算子檢測邊緣(幅值和相位)。
5.5 Enhancement 1. adjust_mosaic_images 功能:全景圖像的自動顏色更改。 2. coherence_enhancing_diff 功能:執行一個圖像的一個一致性加強擴散。 3. emphasize 功能:加強圖像對比度。 4. equ_histo_image 功能:圖像的柱狀圖線性化。 5. illuminate 功能:加強圖像對比度。 6. mean_curvature_flow 功能:把平均曲率應用在一個圖像中。 7. scale_image_max_ 功能:最大灰度值在0到255範圍內。 8. shock_filter 功能:把一個衝擊濾波器應用到一個圖像中。
5.6 FFT 1. convol_fft 功能:用在頻域內的濾波器使一個圖像卷積。 2. convol_gabor 功能:用在頻域內的一個Gabor濾波器使一個圖像卷積。 3. correlation_fft 功能:計算在頻域內的兩個圖像的相互關係。 4. energy_gabor 功能:計算一個兩通道圖像的能量。 5. fft_generic 功能:計算一個圖像的快速傅里葉變換。 6. fft_image 功能:計算一個圖像的快速傅里葉變換。 7. fft_image_inv 功能:計算一個圖像的快速傅里葉逆變換。 8. gen_bandfilter 功能:生成一個理想帶通濾波器。 9. gen_bandpass 功能:生成一個理想帶通濾波器。 10. gen_derivative_filter 功能:在頻域內生成一個倒數濾波器。 11. gen_filter_mask 功能:在空域內存儲一個濾波器掩碼做爲實時圖像。 12. gen_gabor 功能:生成一個Gabor濾波器。 13. gen_gauss_filter 功能:在頻域內生成一個高斯濾波器。 14. gen_highpass 功能:生成一個理想高通濾波器。 15. gen_lowpass 功能:生成一個理想低通濾波器。 16. gen_sin_bandpass 功能:用正弦形狀生成一個帶通濾波器。 17. gen_std_bandpass 功能:用高斯或者正弦形狀生成一個帶通濾波器。 18. optimize_fft_speed 功能:使FFT的運行時間最優化。 19. optimize_rft_speed 功能:使實值的FFT的運行時間最優化。 20. phase_deg 功能:返回用角度表示的一個複雜圖像的相位。 21. phase_rad 功能:返回用弧度表示的一個複雜圖像的相位。 22. power_byte 功能:返回一個複雜圖像的功率譜。 23. power_ln_ 功能:返回一個複雜圖像的功率譜。 24. power_real 功能:返回一個複雜圖像的功率譜。 25. read_fft_optimization_data 功能:從一個文件中下載FFT速度最優數據。 26. rft_generic 功能:計算一個圖像的實值快速傅里葉變換。 27. write_fft_optimization_data 功能:把FFT速度最優數據存儲在一個文件中。
5.7 Geometric-Transformations 1. affine_trans_image 功能:把任意仿射2D變換應用在圖像中。 2. affine_trans_image_size 功能:把任意仿射2D變換應用在圖像中而且指定輸出圖像大小。 3. gen_bundle_adjusted_mosaic 功能:把多重圖像合成一個馬賽克圖像。 4. gen_cube_map_mosaic 功能:建立球形馬賽克的6方位圖像。 5. gen_projective_mosaic 功能:把多重圖像合成一個馬賽克圖像。 6. gen_spherical_mosaic 功能:建立一個球形馬賽克圖像。 7. map_image 功能:把一個通常變換應用於一個圖像中。 8. mirror_image 功能:鏡像一個圖像。 9. polar_trans_image 功能:把一個圖像轉換成極座標。 10. polar_trans_image_ext 功能:把一個圖像中的環形弧轉變成極座標。 11. polar_trans_image_inv 功能:把極座標中的圖像轉變成直角座標。 12. projective_trans_image 功能:把投影變換應用於一個圖像中。 13. projective_trans_image_size 功能:把投影變換應用於一個圖像中而且指定輸出圖像的大小。 14. rotate_image 功能:以一個圖像的中心爲圓心旋轉。 15. zoom_image_factor 功能:把一個圖像縮放規定因子倍。 16. zoom_image_size 功能:把一個圖像縮放到規定大小。
5.8 Inpainting 1. harmonic_interpolation 功能:對一個圖像區域執行諧波插值。 2. inpainting_aniso 功能:經過各向異性擴散執行圖像修復。 3. inpainting_ced 功能:經過一致性加強擴散執行圖像修復。 4. inpainting_ct 功能:經過連貫傳送執行圖像修復。 5. inpainting_mcf 功能:經過水平線平滑執行圖像修復。 6. inpainting_texture 功能:經過結構傳導執行圖像修復。
5.9 Lines 1. bandpass_image 功能:使用帶通濾波器提取邊緣。 2. lines_color 功能:檢測色線和它們的寬度。 3. lines_facet 功能:使用面模型檢測線。 4. lines_gauss 功能:檢測線和它們的寬度。
5.10 Match 1. exhaustive_match 功能:模板和圖像的匹配。 2. exhaustive_match_mg 功能:在一個分辨率塔式結構中匹配模板和圖像。 3. gen_gauss_pyramid 功能:計算一個高斯金字塔。 4. monotony 功能:計算單一操做。
5.11 Misc 1. convol_image 功能:用一個任意濾波掩碼對一個圖像卷積。 2. expand_domain_gray 功能:擴大圖像區域而且在擴大的區域中設置灰度值。 3. gray_inside 功能:對圖像中的每一點在圖像邊界的任意路徑計算儘量低的灰度 值。 4. gray_skeleton 功能:灰度值圖像的細化。 5. lut_trans 功能:使用灰度值查詢錶轉換一個圖像。 6. symmetry 功能:沿一行的灰度值的對稱性。 7. topographic_sketch 功能:計算一個圖像的地理原始草圖。
5.12 Noise 1. add_noise_distribution 功能:向一個圖像添加噪聲。 2. add_noise_white 功能:向一個圖像添加噪聲。 3. gauss_distribution 功能:產生一個高斯噪聲分佈。 4. noise_distribution_mean 功能:測定一個圖像的噪聲分佈。 5. sp_distribution 功能:產生一個椒鹽噪聲分佈。
5.13 Optical-Flow 1. optical_flow_mg 功能:計算兩個圖像之間的光流。 2. unwarp_image_vector_field 功能:使用一個矢量場來展開一個圖像。 3. vector_field_length 功能:計算一個矢量場的矢量長度。
5.14 Points 1. corner_response 功能:在圖像中尋找角點。 2. dots_image 功能:在一個圖像中加強圓形點。 3. points_foerstner 功能:使用Förstner算子檢測關注點。 4. points_harris 功能:使用Harris算子檢測關注點。 5. points_sojka 功能:使用Sojka算子找出角點。
5.15 Smoothing 1. anisotrope_diff 功能:經過保邊各向異性擴散平滑一個圖像。 2. anisotropic_diffusion 功能:對一個圖像執行各向異性擴散。 3. binomial_filter 功能:使用binomial濾波器平滑一個圖像。 4. eliminate_min_max 功能:在空域內平滑一個圖像來抑制噪聲。 5. eliminate_sp 功能:用中值替代閥值外的值。 6. fill_interlace 功能:插補兩個半個視頻圖像。 9. gauss_image 功能:使用離散高斯函數平滑圖像。 10. info_smooth 功能:平滑濾波器smooth_image的信息。 11. isotropic_diffusion 功能:對一個圖像執行各向同性擴散。 12. mean_image 功能:經過平均平滑一個圖像。 13. mean_n 功能:幾個通道的平均灰度值。 14. mean_sp 功能:抑制椒鹽噪聲。 15. median_image 功能:使用不一樣級別掩碼的中值濾波。 16. median_separate_ 功能:使用矩形掩碼的離散中值濾波。 17. median_weighted 功能:使用不一樣級別掩碼的加權中值濾波。 18. midrange_image 功能:計算掩碼內最大和最小值的平均。 19. rank_image 功能:經過一個任意等級掩碼平滑一個圖像。 20. sigma_image 功能:使用sigma濾波器的非線性平滑。 21. smooth_image 功能:使用遞歸濾波器平滑一個圖像。 22. trimmed_mean 功能:使用任意等級掩碼平滑一個圖像。 5.16 Texture 1. deviation_image 功能:計算矩形窗口內的灰度值的標準誤差。 2. entropy_image 功能:計算矩形窗口內的灰度值的熵。 3. texture_laws 功能:使用一個Laws文本濾波器過濾一個圖像。
5.17 Wiener-Filter 1. gen_psf_defocus 功能:產生一個均勻散焦模糊的脈衝相應。 2. gen_psf_motion 功能:產生一個(線性)運動模糊的脈衝相應。 3. simulate_defocus 功能:對一個圖像的均勻散焦模糊進行仿真。 4. simulate_motion 功能:(線性)運動模糊的仿真。 5. wiener_filter 功能:經過Wiener濾波進行圖像恢復。 6. wiener_filter_ni 功能:經過Wiener 濾波進行圖像恢復。