halcon初学者知识【16】如何将Image图象的区域拷贝出来?
一、前言
? ? ? ? 處理Image,halcon有它的獨特的一套計算習慣。掌握Image處理是學習Halcon的基本功夫,而且初學者越早掌握越有利。本文介紹一個簡單操作做練習,此操作實現方法多樣,其中最符合halcon平臺的才是需要掌握的。????????
二、 Image變量詳解----認識Image
????????大多數用C的,用JAVA的,用Python的,都有共同的習慣------面向類的存儲結構;而halcon的操作方法與以上語言完全不同;一般來說,halcon的對象是不可直接訪問的,因而初學者需要拋棄面向對象的習慣,如Image.width(點標記),或iamge[row][col](數組)等的結構思想,在這里不適用;halcon的操作,幾乎全部,需要算子(操作函數)參與。我們這里用一段示例代碼,直觀指出他們的差別,期望讀者快速進入halcon的套路習慣中來。
????????示例:將圖像 fabrik 的左上角120X100的矩形區域,拷貝移動到本圖(200,200)點上;(先用最像“C”語言的Halcon語言實現)
read_image (Image, 'idem')len_block:=100 high_block := 120 tuple_gen_const( len_block*high_block, 0, rows ) tuple_gen_const( len_block*high_block, 0, cols ) tuple_gen_const( len_block*high_block, 0, gray )for i := 0 to high_block-1 by 1for j := 0 to len_block-1 by 1get_grayval(Image, i, j, Grayval1)rows[i*len_block+j] := icols[i*len_block+j] := jgray[i*len_block+j] := Grayval1 endfor endforrow0:=200 col0:=200 for Index := 0 to |rows|-1 by 1rows[Index] := row0 + rows[Index]cols[Index] := col0 + cols[Index] endforset_grayval(Image, rows , cols , gray ) disp_image(Image, 3600)????????注意幾條關鍵的Halcon語句,這些都屬于簡單的訪問語句:
- tuple_gen_const
- get_grayval
- set_grayval
????????初學者可以熟悉一下以上代碼,這里也提醒大家,這不是好的halcon代碼,“純正”的Halcon代碼如下:
read_image(Image, 'idem') gen_rectangle1 ( ROI_0, 0, 0, 150, 150 ) get_region_points(ROI_0, Rows, Columns) get_grayval(Image, Rows, Columns, Grayval) * 設置平移坐標(200,250) Rows := Rows + 200 Columns := Columns+250 set_grayval(Image, Rows, Columns, Grayval) write_image(Image, 'bmp', 0, 'result')以上代碼雖然“純正”的halcon代碼,但不是最簡單代碼,最簡代碼如下:
read_image(Image, 'idem') dev_open_window_fit_image(Image, 0, 0, -1, -1, WindowHandle) dev_display(Image) copy_rectangle(WindowHandle, WinidemdowHandle, 0, 0, 150, 150, 200, 250)結果圖:
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的halcon初学者知识【16】如何将Image图象的区域拷贝出来?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Halcon初学者知识 【13】如何在M
- 下一篇: Halcon初学者知识【17】如何将零件