3.3. Object Model

Halcon 3D算子避坑指南:`connection_object_model_3d`和`select_object_model_3d`参数怎么调才高效? 本文深入解析Halcon 3D算子`connection_object_model_3d`和`select_object_model_3d`的参数调优技巧,涵盖点云分割与筛选的高效方法。通过工业检测场景实例,详细探讨特征参数选择、阈值动态调节及特征组合策略,帮助工程师提升3D视觉检测的准确性和效率。 阅读详情

The devices, queues, and other entities in Vulkan are represented by Vulkan objects.

Vulkan的对象包含设备,队列和其他的实体。

At the API level, all objects are referred to by handles.

在API的层级,所有的对比通过句柄被访问。

There are two classes of handles, dispatchable and nondispatchable.

有两种类型的句柄,可以分发和不可以分发。

Dispatchable handle types are a pointer to an opaque type.

可以分发的句柄类型是一个模糊类型的指针。

This pointer may be used by layers as part of intercepting API commands, and thus each API command takes a dispatchable type as its first parameter.

这个指针被layer用来拦截API命令,和每一个API的命令可以使用disapatchable类型作为它的第一个参数。

Each object of a dispatchable type must have a unique handle value during its lifetime.

每一个dispatchable的对象整个生命周期只能有唯一的句柄。

Non-dispatchable handle types are a 64-bit integer type whose meaning is implementation dependent.

non-dispatcable句柄类型是实现独立的64位整形类型。

If the privateData feature is enabled for a VkDevice, each object of a non-dispatchable type created on that device must have a handle value that is unique among objects created on that device, for the duration of the object’s lifetime.

如果VkDevice的privateData的特性启用的,每一个non-dispatchable类型的必须有一个唯一的句柄。

Otherwise, non-dispatchable handles may encode object information directly in the handle rather than acting as a reference to an underlying object, and thus may not have unique handle values.

否则,non-dispatchable句柄可以直接在句柄中编码对象信息而不是作为隐含对象的应用,和因此无需句柄值。

If handle values are not unique, then destroying one such handle must not cause identical handles of other types to become invalid, and must not cause identical handles of the same type to become invalid if that handle value has been created more times than it has been destroyed.

如果句柄不是唯一的,销毁一个这样的句柄不应该会引起其他类型的无效,和不应该引起同类型完全相同的句柄无效。

All objects created or allocated from a VkDevice (i.e. with a VkDevice as the first parameter) are private to that device, and must not be used on other devices.

一个VkDevice分配或创建的对象仅仅对该设备有效,不能用于其他的设备。

3.3.1. Object Lifetime

Objects are created or allocated by vkCreate* and vkAllocate* commands, respectively.

对象使用vkCreate*来创建,使用vkAllocate*来分配对象。

Once an object is created or allocated, its “structure” is considered to be immutable, though the contents of certain object types is still free to change.

一旦对象被创建或者被分配,它的结构体是不不变的,尽管某些对象的类型的内容仍然可以自由改变。

Objects are destroyed or freed by vkDestroy* and vkFree* commands, respectively.

对象使用vkDestory进行销毁,使用vkFree*来释放对象。

Objects that are allocated (rather than created) take resources from an existing pool object or memory heap, and when freed return resources to that pool or heap.

被分配的对象不是创建的,从已经存在的对象池或者内存堆中获取资源,当被释放返回资源到资源池中。

While object creation and destruction are generally expected to be low-frequency occurrences during runtime, allocating and freeing objects can occur at high frequency.

然而当对象呗创建和销毁的次数希望尽量少,分配和释放可以发生很多次。

Pool objects help accommodate improved performance of the allocations and frees.

对象池帮忙提升性能。

It is an application’s responsibility to track the lifetime of Vulkan objects, and not to destroy them while they are still in use.

应用程序应该跟踪vulkan对象的声明周期,如果是活动的情况下,不应该销毁它。

The ownership of application-owned memory is immediately acquired by any Vulkan command it is passed into.

Vulkan命令需要应用程序内存的所有权被传递进去。

Ownership of such memory must be released back to the application at the end of the duration of the command, so that the application can alter or free this memory as soon as all the commands that acquired it have returned.

在命令执行完,内存的所有权必须返回给应用程序,以至于应用程序可以尽早的修改或者释放内存。

The following object types are consumed when they are passed into a Vulkan command and not further accessed by the objects they are used to create.

如下的对象类型被消耗,不应该进一步被访问由创建他们的对象。

They must not be destroyed in the duration of any API command they are passed into:

他们不应该被销毁在任何API的命令被传递期间:

• VkShaderModule

• VkPipelineCache

A VkRenderPass or VkPipelineLayout object passed as a parameter to create another object is not further accessed by that object after the duration of the command it is passed into.

一个VkRenderPass或者vkPipelineLayout对象作为参数被传递来创建另外一个对象时,它不可以被访问在它传递后。

A VkRenderPass used in a command buffer follows the rules described below.

一个VkRenderPass被使用在command buffer遵循如下的规则.

VkDescriptorSetLayout objects may be accessed by commands that operate on descriptor sets allocated using that layout, and those descriptor sets must not be updated with vkUpdateDescriptorSets after the descriptor set layout has been destroyed.

操作descriptor集合的命令可以访问VkDescriptorSetLayout对象,当descriptor被销毁后vkUpdateDecriptorSets不可以更新。

Otherwise, a VkDescriptorSetLayout object passed as a parameter to create another object is not further accessed by that object after the duration of the command it is passed into.

一个vkDescriptorSetLayout对象作为参数创建另外一个对象时,将不会被访问。

The application must not destroy any other type of Vulkan object until all uses of that object by the device (such as via command buffer execution) have completed.

直到设备使用完,应用程序不会销毁任何其他类型的vulkan对象。

The following Vulkan objects must not be destroyed while any command buffers using the object are in the pending state:

如果comman buffer处于pending状态,下面的vulkan对象不应该被销毁:

• VkEvent • VkQueryPool 

VkBuffer

• VkBufferView

• VkImage

• VkImageView

• VkPipeline

• VkSampler

• VkSamplerYcbcrConversion

• VkDescriptorPool

• VkFramebuffer

• VkRenderPass

• VkCommandBuffer

• VkCommandPool

• VkDeviceMemory

• VkDescriptorSet

Destroying these objects will move any command buffers that are in the recording or executable state, and are using those objects, to the invalid state.

销毁上面对象会让他们从recording或者执行状态转移到无效状态。

The following Vulkan objects must not be destroyed while any queue is executing commands that use the object:

当队列正在使用这些对象时,下面的对象不能被销毁。

• VkFence

• VkSemaphore

• VkCommandBuffer

• VkCommandPool

In general, objects can be destroyed or freed in any order, even if the object being freed is involved in the use of another object (e.g. use of a resource in a view, use of a view in a descriptor set, use of an object in a command buffer, binding of a memory allocation to a resource), as long as any object that uses the freed object is not further used in any way except to be destroyed or to be reset in such a way that it no longer uses the other object (such as resetting a command buffer).

一般来说,对象可以以任何顺序销毁或者被释放,尽管被释放的对象正在被其他的对象使用。

If the object has been reset, then it can be used as if it never used the freed object.

如果对象被重置,然后他可以它可以像从未使用过释放的对象一样使用。

An exception to this is when there is a parent/child relationship between objects.

一个例外是当有一个parenent/child关系在这些对象之间。

In this case, the application must not destroy a parent object before its children, except when the parent is explicitly defined to free its children when it is destroyed (e.g. for pool objects, as defined below).

这种情况下,应用程序一定不能先于子对象销毁父对象。

VkCommandPool objects are parents of VkCommandBuffer objects.

VKCommandpool对象时VkCommandBuffer对象的父对象。

VkDescriptorPool objects are parents of VkDescriptorSet objects.

VKDescriptorPool对象时VkDescriptorSet对象的父对象。

VkDevice objects are parents of many object types (all that take a VkDevice as a parameter to their creation).

VKDevice是很多对象类型的父对象。

The following Vulkan objects have specific restrictions for when they can be destroyed:

下面的对象销毁时有特别的限制:

• VkQueue objects cannot be explicitly destroyed. Instead, they are implicitly destroyed when the

VkDevice object they are retrieved from is destroyed.

VKqueue对象不能被显示销毁。相反,当VkDevice对象被销毁,他们可以被隐含销毁。

Destroying a pool object implicitly frees all objects allocated from that pool.

销毁一个pool对象隐含销毁了从这个pool分配的所有的对象。

Specifically, destroying VkCommandPool frees all VkCommandBuffer objects that were allocated from it, and destroying VkDescriptorPool frees all VkDescriptorSet objects that were allocated from it.

特别,销毁VkCommandPool相当于销毁了从它分配的所有的VkCommandBuffer,销毁VkDescriptorPool相当于销毁了所有从它分配的VkDescriptorSet。

VkDevice objects can be destroyed when all VkQueue objects retrieved from them are idle, and all objects created from them have been destroyed. This includes the following objects:

VKDevice对象可以被销毁,当所有的VkQueue对象是idle,和所有的从它中创建的对象被销毁。它包括如下的对象:

◦ VkFence ◦ VkSemaphore ◦ VkEvent ◦ VkQueryPool ◦ VkBuffer ◦ VkBufferView ◦ VkImage ◦ VkImageView ◦ VkShaderModule ◦ VkPipelineCache ◦ VkPipeline ◦ VkPipelineLayout ◦ VkSampler ◦ VkSamplerYcbcrConversion ◦ VkDescriptorSetLayout ◦ VkDescriptorPool ◦ VkFramebuffer ◦ VkRenderPass ◦ VkCommandPool ◦ VkCommandBuffer ◦ VkDeviceMemory

• VkPhysicalDevice objects cannot be explicitly destroyed. Instead, they are implicitly destroyed when the VkInstance object they are retrieved from is destroyed.

VkPhsicalDevice对象不能被显式销毁。相反,当所有的VkInstance对象从它中分配的被销毁时,他们可以隐式销毁。

• VkInstance objects can be destroyed once all VkDevice objects created from any of its VkPhysicalDevice objects have been destroyed

一旦所有的从VkPhysicalDevice对象分配的VKDevice对象被销毁,VKInstance对象可以被销毁。

3.3.2. External Object Handles

As defined above, the scope of object handles created or allocated from a VkDevice is limited to that logical device.

如上面定义,从VKDevice创建或者分配的对象句柄的使用范围被限制到那个逻辑设备。

Objects which are not in scope are said to be external.

对象不在那个范围被认为是外部的external。

To bring an external object into scope, an external handle must be exported from the object in the source scope and imported into the destination scope.

为了引入外部的对象到这个范围,一个外部的句柄必须从源范围导出和在目的范围进行导入。

双向绑定,v-model原理,vue2/3双向绑定的区别; 在 Vue2 中, v-model其实是一个语法糖,它背后本质上是包含两个操作:1.v-bind绑定一个value属性2.v-on指令给当前元素绑定input事件在 Vue3 中, 在自定义组件上使用v-model, 在vue2的基础上还相当于传递一个modelValue属性, 同时触发一个。 阅读详情

相关推荐

AS_Object_models软件包安装教程.zip

本文还有配套的精品资源,点击获取 简介:此ZIP压缩包包含了AS_Object_models软件包的0.9.1版本,这是一个适用于Python 3的独立平台软件包,它可以通过Python的包管理工具pip进行安装。该软件包以.whl格式提供了预编译的模块,使得安装过程更为简便快捷,无需进行编译步骤。压缩包中还包含了详细的使用说明文档,确保用户能正确安装和使用该软件包。该软件...

weixin_36123300的博客 868

Vulkan Loader Specification and Architecture Overview

转一篇Lunarg的关于Vulkan的Loader和Layer架构文章。 https://vulkan.lunarg.com/app/doc/1.0.13.0/windows/LoaderAndLayerInterface.html Vulkan的Loader是开源的,Lunarg的SDK里有源代码;github上也有:https://github.com/KhronosGroup/Vu

蓝天和白云的博客 2793

高效打卡系统设计:从行为心理学到实践工具

打卡系统作为现代时间管理的重要工具,其核心原理植根于行为心理学中的即时反馈机制和习惯养成理论。通过科学设计的打卡周期和可视化反馈,能有效提升个人自律性和目标达成率。在技术实现上,从纸质记录到数字化工具(如Notion、Excel自动化模板)的演进,为不同场景提供了灵活解决方案。特别在习惯追踪和进度管理领域,结合热力图生成、数据统计等技巧,打卡系统能转化为强大的自我监督工具。本文通过实践案例,详解如何构建兼顾弹性和约束力的个性化打卡方案,帮助读者突破'三天打鱼两天晒网'的常见困境。

weixin_30047059的博客 337

Vulkan® A Specification::Chapter 2::Fundamentals(基本概念)

原文链接:https://vulkan.lunarg.com/doc/view/1.2.131.2/windows/chunked_spec/chap2.html#fundamentals 更新记录: 2020/4/8:: 2基本概念 2.1本地和设备环境 2.2执行模式 2基本概念 这一章介绍Vulkan的架构、执行模式(execution model)、API、队列(queu...

AvatarForTest的博客 1698

超实用!VS Code配置C/C++开发环境全攻略

本文提供了一份详细的VS Code配置C/C++开发环境全攻略。从MinGW-w64编译器的选择与安装,到VS Code核心扩展的配置,再到tasks.json构建任务与launch.json调试环境的设置,手把手指导初学者完成从环境搭建到高效开发与调试的全过程,帮助开发者快速上手C/C++项目。

weixin_28829479的博客 185

【Agora 本地录制最全总结- 基于Java SDK】

Agora 本地服务端录制

lizhengze1117的博客 1790

object Model(对象模型):关于vptr和vtbl

这里设置了3个class,A,B,C之间是继承的关系,A有之间的data1和2,B继承了A,有了A的数据,然后加上自己的数据,C也是。 如果一个类里面有一个虚函数,这个对象里面就会多了一个指针,指向虚函数表。 如果父类有虚函数,子类一定有,会继承父类虚函数的调用权,这时候以B为例子,B推翻了vfunc1()重载了,留下了vfunc2(). vptr关联了vtbl(里面都是函数指针)然后关联了

cbf9526的博客 1265

【全网最全最详细】智能体提示词prompt教程

定义:提示词是用户输入给AI模型(如ChatGPT、MidJourney等)的指令或问题,用于引导模型生成特定类型的输出。它是用户与AI交互的核心媒介。作用:提示词的质量直接影响AI输出的准确性和相关性。好的提示词能明确任务边界、减少歧义,并激发模型的创造力。提示词就是“给AI下指令的说明书”——越清楚、越具体,AI干得越好!帮你更快、更准地拿到想要的结果,不用和AI“猜谜语”。

qq_38196449的博客 8220

COM编程小结

COM编程小结   一、Com概念 所谓COM(Componet Object Model,组件对象模型),是一种说明如何建立可动态互变组件的规范,此规范提供了为保证能够互操作,客户和组件应遵循的一些二进制和网络标准。通过这种标准将可以在任意两个组件之间进行通信而不用考虑其

深之JohnChen的专栏 3万+

新手也能写复杂爬虫!AI+Python自动分析京东商品,提取数据不用F12

不用F12:AI自动分析京东页面,生成选择器;不用懂JS:Playwright自动渲染动态数据;不用改代码:只需配置3个参数,复制运行就能出结果。这套方案不仅适用于京东,修改提示词后还能爬取淘宝、拼多多、亚马逊等电商网站,新手只需掌握“配置参数→运行代码→查看CSV”3步,就能轻松获取任意网站的结构化数据。未来,AI会让爬虫彻底进入“零代码、零门槛”时代,新手也能轻松搞定复杂数据爬取需求。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1341

一次点击跑通:用 Postman 自动获取并携带 CSRF token,测试 SAP OData 写操作

SAP OData 写操作自动化测试方案 针对 SAP Gateway OData 服务写操作中常见的 CSRF token 验证问题,本文提出了一套基于 Postman 的自动化解决方案: 问题分析:解释了 CSRF token 的验证机制及其必要性,说明手工测试效率低下的原因 解决方案: 使用 Postman 环境变量存储 token 通过脚本自动获取并传递 token 利用 Collection Runner 实现一键执行 实施步骤: 创建环境变量存储 token 第一个请求获取 token 并存入变

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 307

visualize_object_model_3d显示3维图像的问题

原问题: 我把halcon代码导出成C++代码。并在QT中调用。 其中用到了 visualize_object_model_3d 但是,目前只能单独弹出一个窗口来显示3维图像,不能在QT的控件框中显示。 像这样单独在一个窗口中显示,是可以的。 但是像这样,在QT生成的框中显示就不行。程序就一直卡住不动了。 ...

dayao8092的博客 4530

逆强化学习:从专家示范中学习策略

逆强化学习(Inverse Reinforcement Learning,简称IRL)是强化学习(Reinforcement Learning,简称RL)的一个子领域,它的目标是从专家的行为中学习策略。在传统的强化学习中,智能体通过与环境交互,根据奖励信号来学习一个策略。而在逆强化学习中,我们没有直接的奖励信号,而是通过观察专家的行为来推断出奖励函数,从而学习到一个与专家类似的策略。逆强化学习作为强化学习的一个重要子领域,在许多实际应用场景中都取得了显著的成功。

AI天才研究院 1452

XML DOM Object Model in .NET [3/3] - Samples

http://blog.tangcs.com/2008/09/04/dotnet-xml-dom-object-model-3/ 转载于:https://www.cnblogs.com/WarrenTang/archive/2008/09/04/1284183.html

weixin_30763455的博客 71

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

XML DOM Object Model in .NET [2/3]

http://blog.tangcs.com/2008/09/04/dotnet-xml-dom-object-model-2/ 转载于:https://www.cnblogs.com/WarrenTang/archive/2008/09/04/1284164.html

weixin_30663391的博客 92

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

XML DOM Object Model in .NET [1/3]

http://blog.tangcs.com/2011/06/02/dotnet-xml-dom-object-model-1/ 转载于:https://www.cnblogs.com/WarrenTang/archive/2008/09/04/1284160.html

weixin_30815469的博客 81

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Halcon点云降噪实战:用`get_object_model_3d_params`和`select_points_object_model_3d`搞定稀疏离群点

本文详细介绍了Halcon中点云降噪的实战技巧,重点解析了`get_object_model_3d_params`和`select_points_object_model_3d`算子的应用。通过动态阈值计算和多尺度降噪技术,有效解决工业质检和三维重建中的稀疏离群点问题,提升点云数据质量。文章还提供了参数调优策略和典型问题排查指南,助力实现工业级解决方案。

weixin_27310417的博客 175

WSS 3.0 Object Model

1.SPWebApplication包含网站集,是网站集的容器。 获取当前系统下所有Web应用程序的集合: SPWebApplicationCollection webs = SPWebService.ContentService.WebApplications;2.SPSite和SPWeb (1).SPSite:WebApplication下的网站集。SPSite的RootWeb代表网站集...

weixin_30354675的博客 72

【四】3D Object Model之创建Creation——write_object_model_3d()算子

3D Object Model之创建Creation——write_object_model_3d()算子

cqy阳的博客 1903

Inside The C++ object model:note(3)

程序转化语义学主题:在对象的初始化时,编译器对用户程序的转化以及优化处理。一,明确的初始化操作       当用户使用显示初始化的时候,编译器会进行对象重新定义,并调用对应的拷贝构造函数。例如,已知X x0; 的时候,我们使用的时候,        编译器会剖开成这样:X x1(

louiswang2009的专栏 601

Inside the C++ Object Model:3、Data 语意学

class 的大小受到三个因素的影响: 语言本身所造成的额外负担 编译器对于特殊情况的优化处理 Alignment 的限制 3.1 Data Member 的绑定 3.2 Data Member 的布局 Nonstatic data members 在 class object 中的排列顺序将和其被声明的顺序一样,任何中间介入的 static data members 都不会背放进对象布...

qq_30534935的博客 213

vue中的v-model详解

不使用:需要手动监听事件并更新视图,适用于简单场景或小型项目。使用:可以自动化地实现数据变化到视图的更新,减少了手动同步的需求,更加适合复杂的应用场景,但相对复杂一些。

czczybb的博客 575

Halcon与QT混合编程 C++ QT中使用visualize_object_model_3d 显示3维图像的问题

我在ihalcon论坛中提问,有同学回答了我用C#的方式。我得到了启发,用QT解决了使用visualize_object_model_3d 显示3维图像的问题。 论坛问题地址: http://www.ihalcon.com/read-11864-1.html 原问题: 我把halcon代码导出成C++代码。并在QT中调用。 其中用到了 visualize_object_model_3...

Coding home - 漂流瓶jz 3364

Using the SharePoint 2010 Client Object Model_part_3

1. Using the SharePoint 2010 Client Object Model - Part 3 In the first two parts of this posting I described the pattern you can use to retrieve data with the client object model (“client ...

weixin_30632089的博客 112

SE(3) Diffusion Model-based Point Cloud Registrationfor Robust 6D Object Pose Estimation 论文解读

首次将点云配准工作引入SE(3)下的扩散模型,关于ICP、ICP变体以及DCP、SE(3)流形的介绍,以及SE(3)扩散模型的配准框架

NPU 研0 1931
上一篇: 3.2 Execution Model
下一篇: 3.4. Application Binary Interface
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值