1.廢話
視覺算法庫的第一步。
讀取圖片:
看你是從哪里讀取,從相機讀取還是從本地硬盤中讀取。
保存圖片:就只有保存到本地了。
上面的截圖顯示我讀取了一張圖片
從相機中讀取另開一篇來說,先說從本地磁盤讀取哈。
怎么讀取的呢
三種方法哈
第一 直接鼠標拖進去
沒錯,跟大多數軟件一樣,直接拿住圖片拖到程序編輯窗口就可以了
會給你彈個框
點擊確定,就可以讀取這張圖片
第二 編寫代碼
在程序編輯窗口編寫read_image算子,點擊tab鍵,然后在算子的參數中輸入圖片的路徑
點F6運行這一句,然后就把圖片讀進來了。
第三 算子窗口選擇圖片
在程序窗口中選中當前算子,打開算子窗口,點擊這里即可選擇圖片讀取進來
讀取圖片算子詳解
read_image(操作員)
名字
read_image
— 讀取具有不同文件格式的圖像。
簽名
read_image( :?Image?:?FileName?: )
描述
操作員從中讀取指示的圖像文件 后臺存儲并生成圖像。一個或多個文件 名稱可以傳入read_image
FileName
.如果有多個文件 name 被傳遞,一個具有相應數字的圖像對象元組 返回圖像對象。
HALCON 格式(HOBJ 和 IMA)
對于 HALCON Iconic Object 格式 (HOBJ) 的圖像,多個圖像 保存在一個文件中將作為圖像元組返回。如果區域或 XLD 包含在文件中,則引發異常。看write_object
有關 HOBJ 格式的更多信息。
所有圖像文件均由操作員寫入write_image
(格式 'ima') 具有擴展名“.ima”.描述文件可以 可用于 IMA 格式的每張圖像(與 外延'.exp').像素數據的類型 (“字節”,“int4”,“真實”)也可以取自 描述文件。如果描述文件不可用,則 類型“字節”默認使用以及默認數據 尺寸 (“高度”x“寬度”) 可以 通過查詢get_system
.如果“.ima”文件和默認數據大小不相等,一個 引發異常。
其他格式
除了 HALCON 格式,TIFF、GIF、BMP、JPEG、JPEG-2000、JPEG-XR、PNG、 還可以讀取 PCX、SUN-Raster、PGM、PPM、PBM 和 XWD 文件。這 PBM 圖像的灰度值設置為值 0 和 255。文件 格式要么由擴展名識別(如果指定),要么 由于文件的內部結構。如果擴展名是 表示可以更快地找到圖像。如果沒有擴展名 指示,帶有擴展名的文件優先于沒有擴展名的文件 外延。在 PGM、PPM 和 PBM 的情況下,相應的擴展 (例如,“鉑族金屬”)或一般值“PNM”可以 使用。在 TIFF 的情況下“tiff”和“tif”是 接受。如果是 JPEG-XR,則接受“jxr”、“wdp”、“wmp”和“hdp”。 僅適用于 JPEG-2000“JP2”被接受。倘 在彩色圖像中,具有三個顏色通道的圖像是 創建后,紅色通道存儲在第一個綠色通道中 在第二和藍色通道在第三組件(通道 數字)。
對于圖像格式 TIFF、PNG、JPEG-XR 和 JPEG-2000,二進制 alpha 通道被解釋為域。對于 TIFF 文件,此外 具有 PhotometricInterpretation 的二進制 SubIFD = TransparencyMask 被解釋為域。否則,生成的域 圖像對象(= 矩陣的所有像素)被選為最大值。
對于 TIFF 圖像,多頁 TIFF 文件將作為圖像對象返回 元組。僅讀取 TIFF 文件中的子 IFD 時,才讀取其尺寸 等于主圖像的尺寸。
“int8”類型的圖像只能在 64 位系統上讀取。此外 只有 IMA 和 TIFF 格式支持此圖像類型。
在當前目錄和映像中搜索映像文件 HALCON 的目錄(由環境變量確定)。這 HALCON 的映像目錄預設為'.'和'/usr/local/halcon/images'在類 Unix 環境中,可以 通過運算符設置set_system
.多張圖片 可以指示目錄。這是通過分離 用冒號表示的單個目錄。
此外,可以通過環境變量設置搜索路徑 HALCONIMAGES(與“image_dir”).例:
setenv HALCONIMAGES “/usr/images:/usr/local/halcon/images”
HALCON 還會搜索子目錄中的圖像“圖像”(程序示例的圖像)。這 環境變量 HALCONROOT 用于 HALCON 目錄。
注意力
如果讀取 CMYK 或 YCCK JPEG/JPEG-XR 文件,HALCON 會假定這些 文件遵循 CMYK 通道的 Adobe Photoshop 約定 是倒置存儲的,即 0 表示 100% 的墨水覆蓋率,而不是 比人們所期望的 0% 墨水。圖像將轉換為RGB 使用此約定的圖像。如果 JPEG 文件不遵循此內容 約定,但以通常的方式存儲 CMYK 通道,invert_image
必須在讀取圖像后調用。
如果讀取包含 alpha 通道的 PNG 圖像,則 alpha 通道作為輸出的第二或第四通道返回 圖像,除非 Alpha 通道正好包含兩個不同的灰度 值,在這種情況下,一個或三個通道圖像具有 返回 domain,其中域中的點對應于 Alpha 通道中灰度值較高的點。
執行信息
- 多線程類型:可重入(與非獨占運算符并行運行)。
- 多線程作用域:全局(可以從任何線程調用)。
- 無需并行處理。
參數
Image
(output_object)image(-array)?對象→
(字節 / 方向 / 循環 / int1 / 復數 / int2 / uint2 / vector_field / int4 / int8 / 實數) 閱讀圖像。
FileName
(input_control)文件名.read(-array)→
?(字符串) 要讀取的圖像的名稱。
默認值:“?printer_chip/printer_chip_01”
建議值:“fabrik”、“保險絲”,?'mreut'、“multiple_dies_01”、“粒子”,?'patras'、“printer_chip/printer_chip_01”,?'rings_and_nuts'、'tooth_rim'
文件擴展名:?., ., ., ., .hobj
ima
tif
tiff
gif
bmp
jpg
jpeg
jp2
jxr
png
pcx
ras
xwd
pbm
pnm
pgm
ppm
2.寫入圖片
處理好的圖片需要保存的本地的,使用下面的這個算子保存到本地
write_image (Image3, 'tiff', 0, '')
第一個參數是需要保存的圖像變量
第二個參數是保存到本地的圖像的格式
第三個參數是沒有像素值的像素應該填充為哪個灰度值
第四個參數是保存的路徑和文件名
寫入圖片算子詳解
write_image(操作員)
名字
write_image
— 以圖形格式編寫圖像。
簽名
write_image(Image?: :?Format,?FillColor,?FileName?: )
描述
操作員保存輸入圖像write_image
Image
在 文件FileName
在格式中Format
.如果域(區域) 不能保存在指定的Format
('bmp'就是這種情況, 'jpeg' 和 'ima'),該區域外的所有像素都接收定義的顏色 由FillColor
.對于灰度值圖像,介于 0(黑色)和 必須通過255(白色)。對于 RGB 彩色圖像,可以傳遞 RGB 值 直接作為十六進制值:例如,黃色背景的0xffff00 (紅色=255,綠色=255,藍色=0)。
目前支持以下格式:
'tiff', 'bigtiff': TIFF 格式,文件擴展名 *.tif
支持所有 HALCON 像素類型。最多 65535 個圖像對象元組 圖像對象和多達 65535 個通道可以寫入。 可以寫入具有混合像素類型通道的圖像對象。
壓縮是可能的
'放氣 [num]': | Adobe Deflate 壓縮(無損) |
'jpeg [num]': | JPEG(有損) |
'lzw' | LZW(無損) |
“包位” | PackBits(無損) |
這里“[數字]'表示壓縮的可選規范 參數。為“放氣”,介于?0?之間的數字(否 壓縮)和?9(最大壓縮)可以指定。為'jpeg',介于 0?和?100?之間的數字可以是 指定。語義與所描述的“jpeg”的語義相同 下面。'jpeg'只能用于 byte 和 int1 類型的圖像 最多有四個通道。
每個圖像對象的域(區域)可以通過壓縮形式保存“面具”(默認設置)或作為額外的 Alpha 通道通過“阿爾法”.僅當域不包含完整的域時,才會存儲該域 圖像。'jpeg'和“阿爾法”不能一起使用,因為 由于 JPEG 的有損壓縮,圖像的域不能 正確重建。不同的選項可以通過以下方式累積 附加用空格字符分隔的它們。
例子:
“TIFF 放氣 9”: | Adobe 矯模壓縮, |
如有必要,域將存儲為掩碼圖像 | |
'tiff JPEG 90': | 高質量的JPEG壓縮, |
如有必要,域將存儲為掩碼圖像 | |
'tiff lzw 阿爾法': | LZW壓縮, |
如有必要,該域將存儲為 Alpha 通道 | |
“tiff”或“沒有”: | 無壓縮, |
如有必要,域將存儲為掩碼圖像 |
請注意,“大夫”表示可以大于 4 GB,而“tiff”表示限制為 4 GB 的 TIFF 文件。 文件大小取決于圖像大小和所選的壓縮。 因此“大夫”如果有可能,應選擇 壓縮文件將增長到 4 GB 以上。
“bmp”: Windows-BMP 格式,文件擴展名 *.bmp
此格式只能存儲具有一個通道的圖像(灰度值圖像) 或三個通道(RGB圖像)。
僅支持具有像素類型字節的圖像 文件格式。
“jpeg”:JPEG 格式(有損壓縮),文件擴展名 *.jpg
與格式字符串一起確定壓縮的質量值 可以提供費率,例如“JPEG 30”。
此格式只能存儲具有一個通道的圖像(灰度值圖像) 或三個通道(RGB圖像)。
僅支持具有像素類型字節的圖像 文件格式。
注意:存儲以供以后處理的圖像不應 由于壓縮過程中信息丟失,因此以此格式存儲。
“jp2”:JPEG-2000 格式(無損和有損壓縮),文件擴展名 *.jp2
與格式字符串一起確定壓縮的質量值 可以提供費率(例如,'JP2 40').此值對應于 壓縮圖像大小與未壓縮圖像大小之比 圖像(以百分比為單位)。由于無損 JPEG-2000 壓縮已經減少了 文件大小顯著,只有較小的值(通常小于 50) 影響文件大小。如果未為壓縮提供任何值(和 只有這樣),圖像才會被壓縮而不會丟失。
映像可以包含任意數量的通道。可能的類型有 Byte、Cyclic、Direction、Int1、Uint2、Int2 和 Int4。在 int4 的情況下,它 只能存儲精度小于或等于 24 位的圖像 (否則會引發異常)。如果圖像具有縮小的 域被寫入,區域存儲為 1 位 alpha 通道。
請注意,圖像的 JPEG-2000 編碼需要大量內存。為 大圖像,因此建議使用不同的格式(例如,“tiff”).支持的最大圖像大小(寬 x 高) JPEG-2000 是也在 HALCON-XL 中。
'jpegxr':JPEG-XR 格式(無損和有損壓縮),文件擴展名 *.jxr
與格式字符串一起確定壓縮的質量值 可以提供速率,例如,“JPEGXR 30”(使用“JPEGXR”或“JPEGXR 100”表示 無損編碼)。除 int8 之外的所有 HALCON 像素類型 受支持。具有任意數量的圖像對象的圖像對象元組 可以寫。圖像最多可以有 8 個通道。在 int4 和 真實圖像,數值范圍被壓縮到 24 位精度。請注意, 無論質量設置如何,這都可能導致損失。 如果寫入具有縮小域的圖像,則該區域存儲時沒有 損失為 1 位 Alpha 通道。復雜圖像、矢量場和常規圖像 具有兩個灰度值通道的圖像填充了第三個空通道 符合標準。
請注意,您需要在當前工作中具有寫入權限 目錄,以便將圖像保存為 JPEG-XR 格式,無論 目標目錄。
“png”:PNG 格式(無損壓縮),文件擴展名 *.png
與格式字符串一起,0 到 9 之間的壓縮級別可以是 指定,其中 0 對應于無壓縮,9 對應于最佳壓縮 壓縮。或者,可以使用 以下字符串:“最佳”,“最快”和“無”. 因此,正確參數的示例是“png”,“png 7”, 和'png 無'.
byte 和 uint2 類型的圖像可以存儲在 PNG 文件中。如果圖像具有 寫入縮減域,該區域存儲為 alpha 通道,其中 域內的點存儲為 圖像類型和域外的點存儲為格雷值 0。 如果寫入具有完整域的圖像,則不會存儲 Alpha 通道。
此格式只能存儲具有一個通道的圖像(灰度值圖像) 或三個通道(RGB圖像)。支持的最大圖像大小 PNG 的(寬 x 高)為也在 HALCON-XL 中。
'hobj': HALCON 標志性物體 (HOBJ),文件擴展名 *.hobj
支持所有類型的 HALCON 映像。看write_object
查看更多 有關 HOBJ 格式的信息。
'ima':HALCON 格式,文件擴展名 *.ima 和 *.exp
此文件格式現在是舊版,應改用 HOBJ 格式。 數據以二進制形式逐行寫入(不帶標題或回車 返回)。圖像的大小和像素類型存儲在 描述文件”FileName
.exp“。所有 HALCON 像素類型,除了“復雜”和“vector_field”可以寫。 對于此格式,只能存儲一個通道圖像。
執行信息
- 多線程類型:可重入(與非獨占運算符并行運行)。
- 多線程作用域:全局(可以從任何線程調用)。
- 無需并行處理。
參數
Image
(input_object)(multichannel-)image(-array)?對象→
(字節 / 方向 / 循環 / int1 / 復數 / int2 / uint2 / vector_field / int4 / int8 / 實數) 輸入圖像。
Format
(input_control)字符串→
?(字符串) 圖形格式。
默認值:“?tiff”
建議值:“tiff”、“TIFF 面具”、“tiff alpha”,?'tiff 放氣 9',?'tiff deflate 9 alpha',?'tiff JPEG 90',?'tiff lzw',?'tiff lzw alpha '、“tiff packbits”,?'bigtiff'、《大人物面具》,“大夫阿爾法”,?'Bigtiff 放氣 9'、“Bigtiff Deflate 9 Alpha”,?'Bigtiff JPEG 90',?'Bigtiff LZW',?'Bigtiff LZW 阿爾法 ',“Bigtiff PackBits”,?'bmp'、'jpeg',?'JPEG 100',?'JPEG 80',?'JPEG 60',?'JPEG 40',?'JPEG 20',?'JP2',?'JP2 50',?'JP2 40',?'JP2 30',?'JP2 20',?'jpegxr',?'JPEGXR 50',?'JPEGXR 40',?'JPEGXR 30',?'JPEGXR 20'、'png',?'png 最佳',?'png 最快',?'png 無',?'ima',?'hobj'
FillColor
(input_control)數→
?(整數/實數) 填充不屬于的像素的灰度值 到鏡像域(區域)。
默認值:0
建議值:-1、0、255、65280、16711680
FileName
(input_control)文件名.write(-array)→
?(字符串) 圖像文件的名稱。
文件擴展名:?., ., ., ., ., ., .hobj
ima
tif
tiff
bmp
jpg
jpeg
jp2
jxr
png