用于 DirectShow 文件阅读器的图像采集接口
|
接口:
|
DirectFile
|
|
修订:
|
18.11.5
|
|
日期: |
2021-10-20
|
一般情况
系统要求
- 英特尔兼容电脑,装有 Windows 7(32 位或 64 位)或更新版本,并安装了 DirectX 8.1 或更高版本。您可以运行 dxdiag 诊断程序检查所安装的 DirectX 版本。
- HALCON 图像采集接口分别是 hAcqDirectFile.dll 或 hAcqDirectFilexl.dll。
如果正确安装了接口,这些 DLL 应位于 %HALCONROOT%\bin\%HALCONARCH% 中。你不需要手动注册这个 DLL。相反,该 DLL 会检查当前的注册情况,并在必要时自行执行必要的步骤。如果没有足够的权限,它将以提升的权限运行 regsvr32.exe,这通常需要用户交互。
- 第三方库 MediaInfo.dll 0.7.87.0 版本,如果已正确安装接口,该库也应位于 %HALCONROOT%\bin\%HALCONARCH%。请注意,该 DLL 对于图像采集并不重要,只有在调用 get_framegrabber_param(..., 'media_info', ...) 时才需要它。
接口版本控制
用于数字输入/输出和图像采集的 MVTec 接口始终与一系列 HALCON 版本兼容。因此,版本控制方案既说明了接口的兼容性,也说明了接口本身的版本。接口版本总是由三个数字组成,中间用点隔开,即 18.11.5。前两个数字描述了接口兼容的最小 HALCON 版本。以 18.11.5 版本为例,这意味着接口兼容 HALCON 18.11 之后的所有 HALCON 版本。最后一个数字说明接口的修订版本,在本例中为修订版本 5。
安装
只有在手动安装或更新接口时,才能按照这些步骤操作:
- Windows: 将包含接口文件的压缩包解压缩到 HALCON 基本目录 %HALCONROOT%(注意:此步骤可能需要管理员权限)。此外,还必须手动将接口示例移至 %HALCONEXAMPLES% 目录。
局限性
一般来说,能否使用 HALCON DirectFile 接口打开文件主要取决于应用程序所运行系统的配置。通常情况下,需要安装合适的编解码器。根据经验,如果可以使用
GraphEdit 重放文件,则很有可能也可以使用 HALCON DirectFile 接口打开文件。在 64 位操作系统上,HALCON 架构(32 或 64 位)必须与编解码器的架构相匹配。有关系统中编解码器的详细信息,请参阅 Windows Media Player 关于对话框的技术支持信息。
- 只支持允许基于帧定位的文件。
- 不支持图像缩放和裁剪。
| 参数 |
值列表 |
类型 |
方式 |
描述 |
| 'bits_per_channel' |
[] |
|
|
未使用。 |
| 'camera_type' |
'CAMFILE:' |
字符串 |
预定义 |
相机配置文件的语法。 |
| 'color_space' |
['gray', 'rgb'] |
字符串 |
预定义 |
值。 |
| 'defaults' |
[1, 1, 0, 0, 0, 0, 'default', 8, 'rgb', -1.0, 'false', 'default', '0', -1, 1]
|
混合型 |
预定义 |
open_framegrabber 的默认值。 |
| 'device' |
[] |
|
|
未使用。 |
| 'external_trigger' |
[] |
|
|
未使用。 |
| 'field' |
[] |
|
|
未使用。 |
| 'general' |
[] |
字符串 |
预定义 |
有关 HALCON DirectFile 接口的信息。 |
| 'generic' |
[] |
|
|
不支持查询。 |
| 'horizontal_resolution' |
1 |
整数 |
预定义 |
水平分辨率的值列表。 |
| 'image_height' |
[] |
|
|
不支持查询。 |
| 'image_width' |
[] |
|
|
不支持查询。 |
| 'info_boards' |
'filter:<filter> | merit:<merit> | file:<file> | type:<type> | subtype:<subtype>'
|
字符串 |
动态 |
有关已安装 DirectShow 过滤器的信息:
- filter过滤器 是该 DirectShow 过滤器的名称。
- merit优点 是一个值,用于定义在构建捕获筛选图时优先使用哪些筛选器。标准值 以其名称表示。
- file文件 文件是包含该过滤器的 DLL。
- type类型 和 subtype子类型 列出了该过滤器所有输入引脚的 介质类型 。已知介质类型按名称显示,其他类型按 GUID 显示。
|
| 'parameters' |
['<parameters>'] |
字符串 |
预定义 |
HALCON 接口的预定义参数。 |
| 'parameters_readonly' |
['<parameters>'] |
字符串 |
预定义 |
HALCON 接口的预定义只读参数。 |
| 'parameters_writeonly' |
['<parameters>'] |
字符串 |
预定义 |
HALCON 接口的预定义只写参数。 |
| 'port' |
[] |
|
|
未使用。 |
| 'revision' |
'<revision>' |
字符串 |
预定义 |
DirectFile 接口的版本号。 |
| 'start_column' |
[] |
|
|
不支持查询。 |
| 'start_row' |
[] |
|
|
不支持查询。 |
| 'vertical_resolution' |
1 |
整数 |
预定义 |
垂直分辨率的值列表。 |
| 参数 |
值 |
默认值 |
类型 |
描述 |
| Name |
'DirectFile' |
|
字符串 |
HALCON 接口的名称。 |
| HorizontalResolution |
--- |
|
|
忽略。 |
| VerticalResolution |
--- |
|
|
忽略。 |
| ImageWidth |
--- |
|
|
忽略。 |
| ImageHeight |
--- |
|
|
忽略。 |
| StartRow |
--- |
|
|
忽略。 |
| StartColumn |
--- |
|
|
忽略。 |
| Field |
--- |
|
|
忽略。 |
| BitsPerChannel |
--- |
|
|
忽略。 |
| ColorSpace |
'gray', 'rgb' |
'rgb' |
字符串 |
所需的,也就是生成的 HALCON 图像的图像通道数。 |
| Generic |
--- |
|
|
忽略。 |
| ExternalTrigger |
--- |
|
|
忽略。 |
| CameraType |
'<filename>' |
'default' |
字符串 |
相机类型参数用于指定要打开的视频文件的名称。视频文件的名称可以是绝对名称(例如 "C:\MyImages\MyAVIFile.avi"),也可以是与环境设置 %HALCONIMAGES% 相对的名称。 |
| Device |
--- |
|
|
忽略。 |
| Port |
--- |
|
|
忽略。 |
| LineIn |
--- |
|
|
忽略。 |
| 参数 |
值 |
默认值 |
类型 |
描述 |
| 'frame_number' |
<number> |
|
整数 |
通过 grab_image 或 grab_image_async 抓取的下一帧的编号。 |
| 'grab_timeout' |
<milliseconds> |
5000 |
整数 |
终止待处理抓取的预期超时(毫秒)。如果指定-1,则超时设置为无限。 |
可能还存在以下后缀的其他只读参数:
- '_description': 这些参数以字符串形式提供相应参数的工具提示。
- '_range': 这些参数以 4 个元素的元组形式提供了相应整数或浮点数参数的最小值、最大值、步宽和默认值, 例如 get_framegrabber_param(.., 'Shutter_range', ..) 将返回输出元组 [min, max, step, default].
- '_values': 这些参数以元组形式提供相应参数的有效值列表,例如 get_framegrabber_param(.., 'volatile_values', ..) 将返回输出元组 ['enable', 'disable'].
在调用 info_framegrabber(.., 'parameters', ..) 时,所有这些后置固定参数名都不会返回,而是用于通过通用图形用户界面,特别是 HDevelop 图像采集助手,方便地进行参数设置。
| 参数 |
值 |
默认值 |
类型 |
方式 |
描述 |
| 'bits_per_channel' |
<default> |
-1 |
整数 |
预定义 |
该值不会被使用,因此会返回默认值。 |
| 'camera_type' |
'<filename>' |
'default' |
字符串 |
预定义 |
相机配置文件的名称。 |
| 'color_space' |
'gray', 'rgb' |
'rgb' |
字符串 |
预定义 |
所需的,也就是生成的 HALCON 图像的图像通道数。 |
| 'device' |
<default> |
'0' |
整数 |
动态 |
该值不会被使用,因此会返回默认值。 |
| 'external_trigger' |
<default> |
'false' |
字符串 |
预定义 |
该值不会被使用,因此会返回默认值。 |
| 'field' |
'<default>' |
'default' |
字符串 |
预定义 |
该值不会被使用,因此会返回默认值。 |
| 'filter_graph' |
'filter:<filter> | merit:<merit> | file:<file> | type:<type> | subtype:<subtype>'
|
|
字符串 |
动态 |
有关已连接 DirectShow 过滤器的信息:
- filter过滤器 是该 DirectShow 过滤器的名称。
- merit优点 是一个值,用于定义在构建捕获筛选图时优先使用哪些筛选器。标准值 以其名称表示。
- file文件 文件是包含该过滤器的 DLL。
- type类型 和 subtype子类型 列出了该过滤器所有输入引脚的 介质类型 。已知介质类型按名称显示,其他类型按 GUID 显示。
|
| 'first_frame' |
<number> |
|
整数 |
动态 |
视频流第一帧的编号。 |
| 'frame_number' |
<number> |
|
整数 |
动态 |
Number of the next frame to be grabbed by grab_image or grab_image_async.
|
| 'generic' |
<default> |
-1 |
混合型 |
预定义 |
该值不会被使用,因此会返回默认值。 |
| 'grab_timeout' |
<milliseconds> |
5000 |
整数 |
预定义 |
当前抓取超时(毫秒)。 |
| 'horizontal_resolution' |
<resolution> |
1 |
整数 |
预定义 |
水平分辨率的当前值。 |
| 'image_height' |
<default> |
0 |
整数 |
预定义 |
该值不会被使用,因此会返回默认值。 |
| 'image_width' |
<default> |
0 |
整数 |
预定义 |
该值不会被使用,因此会返回默认值。 |
| 'last_frame' |
<number> |
|
整数 |
动态 |
视频流最后一帧的编号。 |
| 'line_in' |
<default> |
1 |
整数 |
预定义 |
该值不会被使用,因此会返回默认值。 |
| 'media_info' |
<media_info> |
|
字符串 |
动态 |
通过第三方库 MediaInfo 获取的源文件信息(参见 系统要求 )。 |
| 'name' |
'DirectFile' |
|
字符串 |
预定义 |
HALCON 接口的名称。 |
| 'port' |
<default> |
-1 |
整数 |
预定义 |
该值不会被使用,因此会返回默认值。 |
| 'revision' |
'<revision>' |
|
字符串 |
预定义 |
DirectFile 接口的版本号。 |
| 'start_column' |
<column> |
0 |
整数 |
预定义 |
返回 HALCON 图像的当前起始列。 |
| 'start_row' |
<row> |
0 |
整数 |
预定义 |
返回 HALCON 图像的当前起始行。 |
| 'vertical_resolution' |
<resolution> |
1 |
整数 |
预定义 |
垂直分辨率的当前值。 |
此接口不支持。
此接口不支持。
此接口不支持。
此接口不支持。
grab_image 启动新的同步抓取。另见
grab_image。请注意,该接口会将来自设备的图像转换为由参数 "image_width"、"image_height"、"start_row"、"start_column"、"bits_per_channel" 和 "color_space" 指定的所需图像格式。
grab_image_async 返回图像并开始下一次异步抓取。另请参阅
grab_image_async。请注意,该接口会将来自设备的图像转换为由参数 "image_width"、"image_height"、"start_row"、"start_column"、"bits_per_channel" 和 "color_space" 指定的所需图像格式。
此接口不支持。
此接口不支持。
HDevelop 示例
第三方库的使用
该接口依赖于以下第三方库。有关版权和许可证信息,参见 HALCON 基本目录中的文件
third_party_directfile.txt。
发行说明
- 修订 18.11.5(2021 年 10 月 20 日):
- 现在,该接口的发布包中包含了为 HDevelop 示例浏览器提供元信息的文件。
- 修订 18.11.4(2020 年 10 月 27 日):
- 此接口无法从 Linux 和 macOS 上的 .NET Core 应用程序中加载。该问题已得到修复。
- 修订 13.0.3(2020 年 2 月 27 日):
- 该接口的分发包中已添加了 third_party_directfile.txt 文件。
- 查询参数 "media_info" 可能导致 HALCON 在处理某些视频文件时崩溃。该问题已得到修复。
- 修订 13.0.2(2018 年 8 月 13 日):
- HALCON 库的技术依赖已被移除。
- 在调用参数 "media_info" 时,如果文件信息包含 UNICODE 字符,则无法正确处理。该问题已得到修复。
- 修订 13.0.1(2016 年 10 月 28 日):
- HALCON 13 版本的接口。
- 在 Windows 系统上,路径的最大长度限制为 260 个字符。这个问题已经解决。现在,Windows 系统上的最大路径总长度为 32,767 个字符。
- 修订 6.3(2016 年 8 月 26 日):
- 修订 6.2(2015 年 7 月 22 日):
- 修订 6.1(2015 年 2 月 23 日):
- 修订 6.0(2014 年 10 月 31 日):
- HALCON 12 版本的接口。
- 改进了 DLL 注册流程,以防接口尚未正确注册。
- 修订 5.0(2012 年 5 月 15 日):
- HALCON 11 版本的接口(包含在 HALCON 11 DVD 中)。
- 修订 4.2(2010 年 8 月 20 日):
- 图像缓冲区大小计算超出了 8 倍。该问题已得到修复。
- HALCON 10 版本的接口(包含在 HALCON 10 DVD 中)。
- 修订 4.1(2009 年 9 月 9 日):
- 修正了在同时使用多个 DirectFile 获取句柄时参数 "frame_number" 的错误。
- 修订 4.0(2008 年 11 月 28 日):
- HALCON 9.0 版本的接口(包含在 HALCON 9.0 DVD 中)。
- 修订 3.1(2008 年 4 月 22 日):
- 添加了后缀为"_description"、"_range" 和"_values" 的只读参数,以便通过通用图形用户界面轻松设置参数。
- 修订 3.0(2007 年 5 月 15 日):
- HALCON 8.0 版本的接口(包含在 HALCON 8.0 DVD 中)。
- 修订 2.3(2007 年 4 月 27 日):
- 修订 2.2(2006 年 8 月 14 日):
- 修订 2.1(2005 年 9 月 12 日):
- 提供 64 位 Windows 版本。
- 不再需要手动注册 hAcqDirectFile.dll 或 parhAcqDirectFile.dll。
- 修订 2.0(2005 年 9 月 1 日):
- 首次正式发行(包含在 HALCON 7.1 CD 中)。
关于超链接的免责声明:
用户可通过本页面的超文本链接访问外部非 MVTec 网站。任何此类访问均应理解,非 MVTec 网站的内容不受 MVTec Software GmbH 的控制,MVTec Software GmbH 对此类网站不作任何陈述,用户应自行承担风险。MVTec Software GmbH 不对外部非 MVTec 网站的隐私保护措施或内容负责。
版权说明:
© MVTec Software GmbH 版权所有。保留所有权利。除非另有说明,本页面内容的版权和类似权利,包括但不限于此处出现的所有文本、设计和图像,均为 MVTec Software GmbH 所拥有的版权作品。"MVTec Software GmbH" 和 "HALCON" 是 MVTec Software GmbH 的注册商标。此处提及或使用的所有其他品牌名称、设计、服务标志和商标(无论是否注册)均为其各自所有者的财产。