1.整体架构
HALCON多线程处理框架基本思想是单独一个线程获取待处理图像,若干个图像处理线程并行执行
2.架构图
3.HALCON多线程并行相关算子
broadcast_condition
clear_barrier
clear_condition
clear_event
clear_message
clear_message_queue
clear_mutex
create_barrier
create_condition
create_event
create_message
create_message
create_message_queue
create_mutex
dequeue_message
enqueue_message
get_current_thread_id
get_message_obj
get_message_param
get_message_queue_param
get_message_tuple
get_threading_attrib
interrupt_operator
lock_mutex
set_message_obj
set_message_param
set_message_param
set_message_queue_param
set_message_tuple
signal_condition
signal_event
timed_wait_condition
try_lock_mutex
try_wait_event
unlock_mutex
wait_barrrier
wait_condition
wait_event
write_message
对这些算子使用的时候要注意分类
哪些属于事件同步算子,作用是当signal_xxx算子执行时改变状态对象
哪些属于消息操作算子,包括创建消息、创建消息队列、销毁消息队列、将消息入队、获取消息参数、获取消息对象、获取消息元组
哪些属于互斥算子,包括资源加锁、资源解锁
HALCON多线程示例
acquiring_image
通过相机包获取像素数据
把像素数据转为HObject
把HOject推入待处理消息队列
process_image
从待处理消息队列弹出一条消息
获取ROI
把ROI推入待推理消息队列
inference_image
从待推理消息队列弹出一条消息
执行推理并处理结果
将结果写入到PLC剔除系统