设为首页收藏本站 距【华南国际工业博览会】宝安新馆开幕 : :

Halcon视觉之家 - 51Halcon专注于机器视觉技术

 找回密码
 会员注册

QQ登录

只需一步,快速开始

扫一扫,微信登录

查看: 189|回复: 4

[软件错误] How to make multithreading call and get output results from threads?

[复制链接]
  • TA的每日心情
    奋斗
    2021-9-13 04:56
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    6

    主题

    53

    帖子

    73

    积分

    Rank: 1

    积分
    73

    切换助手验证会员

    发表于 2021-7-15 19:26:31 | 显示全部楼层 |阅读模式

    51Halcon诚邀您的加入,专注于机器视觉开发与应用技术,我们一直都在努力!

    您需要 登录 才可以下载或查看,没有帐号?会员注册

    x
    Hi, Colleagues!

    Can you help me with one task?

    I need to call some procedure 4 times and get results from each threads after execution.

    Is anybody know how to make it easy?

    My code now is:

    Count:=(|MirrorsData|-2)/3
    MirrorWidth:=MirrorsData[|MirrorsData|-2]
    MirrorHeight:=MirrorsData[|MirrorsData|-1]

    FullTime:=0

    Threads:=[]



    for Index := 0 to |MirrorsData|-3 by 3


        X:=MirrorsData[Index]
        Y:=MirrorsData[Index+1]
        Ang:=MirrorsData[Index+2]

        MirrorAreaData:=[X,Y,Ang,MirrorWidth,MirrorHeight]

        copy_image(SourceImage, DupImage)

        par_start<LabelingProcessThread.at(Index)>: Get_Label_Collerete_And_Cap (DupImage, \
                                                            LabelPartImage, \
                                                            CollereteImage, \
                                                            CapImage, \
                                                            MirrorAreaData, \
                                                            HangersData, \
                                                            MirrorAreaData, \
                                                            MirrorAreaData, \
                                                            CollereteData, \
                                                            CapData, \
                                                            HangersShapeModel, \
                                                            TimeElapsed)

    endfor
    convert_vector_to_tuple (LabelingProcessThread, ImageProcessingThreads)
    count_seconds (T1)
    par_join(ImageProcessingThreads)
    count_seconds (T2)

    TimePar:=1000.0*(T2-T1)

    return ()




    Looks like he is working. But I don't understand how to get results from threads after execution.
  • TA的每日心情
    奋斗
    2021-9-13 04:56
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    6

    主题

    53

    帖子

    73

    积分

    Rank: 1

    积分
    73

    切换助手验证会员

     楼主| 发表于 2021-7-15 19:29:19 | 显示全部楼层
    I need to get TimeElapsed and Images for begin :)
  • TA的每日心情
    开心
    昨天 14:21
  • 签到天数: 844 天

    连续签到: 1 天

    [LV.10]以坛为家III

    185

    主题

    910

    帖子

    5427

    积分

    Rank: 9

    积分
    5427

    热心会员突出贡献切换助手验证会员最佳新人

    发表于 2021-7-15 20:58:50 | 显示全部楼层
    1. ThreadIDs := []
    2.   for Index := 1 to 5 by 1
    3.     par_start <ThreadID> : gather_data()
    4.     ThreadIDs := [ThreadIDs, ThreadID]
    5.   endfor
    复制代码

    1. for Index := 1 to 5 by 1
    2.     par_start <ThreadIDs.at(Index - 1)> : gather_data()
    3.   endfor
    复制代码

    1. for Index := 1 to 5 by 1
    2.     par_start <ThreadIDs.at(Index - 1)> : gather_data(Result.at(Index - 1))
    3.   endfor
    复制代码
  • TA的每日心情
    奋斗
    2021-9-13 04:56
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    6

    主题

    53

    帖子

    73

    积分

    Rank: 1

    积分
    73

    切换助手验证会员

     楼主| 发表于 2021-7-19 18:26:58 | 显示全部楼层
    Hi, Jedi Knight!

    Thank you for your answer.

    I need to understand how to get results from threads after execution.

        par_start<FindDfmThread.at(Index)>: Find_Local_Dfm(ImageReduced, Threshold, FindCount, DFMs[Index], \
                                   Score.at(Index), Row.at(Index), Col.at(Index))

    How to get Score, Row and Col?

    The results returns as Score = {[0.95 , 0.84 , 0.77 , 0.66 , 0.51 ]} and I don'tunderstand how to get this Tuple parameter.

    How to use their values in cycle?
  • TA的每日心情
    奋斗
    2021-9-13 04:56
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    6

    主题

    53

    帖子

    73

    积分

    Rank: 1

    积分
    73

    切换助手验证会员

     楼主| 发表于 2021-7-19 18:38:24 | 显示全部楼层
    Oh, I see )))

    I just need to use operator:

    convert_vector_to_tuple (Score, ConvertedScores)

    Ok! It is works!!!
    您需要登录后才可以回帖 登录 | 会员注册

    本版积分规则

    视觉培训招生

    建议您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流浏览器浏览本网站

    51Halcon会员技术交流会员技术交流 | 51Halcon官方客服咨询官方客服咨询 | Halcon切换助手使用反馈切换助手使用

    算子查询| 申请友链| 小黑屋| 手机版| Archiver|

    © 2015-2021 51Halcon机器视觉  X3.4  粤ICP备15095995号 粤公网安备44030602000670号

    快速回复 返回顶部 返回列表