HALCON-从入门到入门-读取图片保存图片

1.废话

视觉算法库的第一步。

读取图片:

看你是从哪里读取,从相机读取还是从本地硬盘中读取。

保存图片:就只有保存到本地了。

上面的截图显示我读取了一张图片

从相机中读取另开一篇来说,先说从本地磁盘读取哈。

怎么读取的呢

三种方法哈

第一 直接鼠标拖进去

没错,跟大多数软件一样,直接拿住图片拖到程序编辑窗口就可以了

会给你弹个框

点击确定,就可以读取这张图片

第二 编写代码

在程序编辑窗口编写read_image算子,点击tab键,然后在算子的参数中输入图片的路径

点F6运行这一句,然后就把图片读进来了。

第三 算子窗口选择图片

在程序窗口中选中当前算子,打开算子窗口,点击这里即可选择图片读取进来

读取图片算子详解

read_image(操作员)

名字

read_image--- 读取具有不同文件格式的图像。

签名

read_image ( : Image:FileName : )

描述

操作员从中读取指示的图像文件 后台存储并生成图像。一个或多个文件 名称可以传入read_imageFileName.如果有多个文件 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_imageImage在 文件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'* ,介于 0100 之间的数字可以是 指定。语义与所描述的"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

相关推荐
浅念同学7 分钟前
算法-常见数据结构设计
java·数据结构·算法
UndefindX10 分钟前
PAT甲级1006 :Sign In and Sign Out
数据结构·算法
LabVIEW开发1 小时前
LabVIEW图像分段线性映射
计算机视觉·labview·labview开发
FutureUniant2 小时前
GitHub每日最火火火项目(7.7)
python·计算机视觉·ai·github·视频
T风呤3 小时前
学生管理系统(通过顺序表,获取连续堆区空间实现)
算法
stackY、4 小时前
【Linux】:程序地址空间
linux·算法
心死翼未伤4 小时前
【MySQL基础篇】多表查询
android·数据结构·数据库·mysql·算法
Orion嵌入式随想录5 小时前
算法训练 | 图论Part1 | 98.所有可达路径
算法·深度优先·图论
西西,正在减肥5 小时前
【leetcode52-55图论、56-63回溯】
算法
Beast Cheng5 小时前
07-7.1.1 查找的基本概念
数据结构·笔记·考研·算法·学习方法