设置首页收藏本站
开启左侧

[C++] Halcon和qt联合编程 怎么在qt界面上显示出矩形框?

[复制链接]
scarsss 发表于 2023-4-10 11:26:20 | 显示全部楼层 |阅读模式
做一个识别表单里有没有打钩的项目  没有打钩的话就在图片上显示出来哪里没有打钩   在halcon里可以做到  
1681096573629.png

但在qt里怎么显示出来?想我这里希望点击“继续检查”按键后能在图片上显示出来
1681096474876.png
标出红色问题区域的代码是
halcon里算子:dev_display(xxxx)

halcon转到qt里的c=++代码:   
if (HDevWindowStack::IsOpen())

       DispObj(xxxx, HDevWindowStack::GetActive());
(xxxx是region名称)


我这里按下“打开图片”按键后打开并显示图片的代码是:

  QString path = QFileDialog::getOpenFileName(this,"select image","","(*.png *.jpg *.bmp)");//选择图片
        if(path=="")
        {
            return;
        }
        else
        {


HTuple finalpath = HTuple(path.toStdString().data());//转换路径格式
            ReadImage(&ho_Image,finalpath);//读取图片
            GetImageSize(ho_Image, &hv_Width, &hv_Height);//获取图片宽高
            SetPart(hv_WindowHandle,0,0,hv_Height,hv_Width);//自适应显示
            ClearWindow(hv_WindowHandle);//清空窗口
            DispObj(ho_Image,hv_WindowHandle);//显示图片

}
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
qq27472007 发表于 2023-4-10 18:57:51 | 显示全部楼层
总感觉, 这都是啥啊, 苦笑不得。你在Halcon软件里能显示, QT肯定也没问题啊。这么说吧, 你在Halcon里, 不知道怎么得到这个Rectangle1之后, 不是dev_display(Rectangle1);嘛, 然后QT里一样读取图片, 处理得到一个Rectangle1, 然后在QT"继续检查"按钮里DispObj(Rectangle1)不就行了吗?没搞懂你的难点在哪里, 或者你提问不对, 你是不是想问怎么检查图片里哪个勾没打?
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
 楼主| scarsss 发表于 2023-4-10 21:23:15 | 显示全部楼层
qq27472007 发表于 2023-4-10 18:57
总感觉, 这都是啥啊, 苦笑不得。你在Halcon软件里能显示, QT肯定也没问题啊。这么说吧, 你在Halcon里, 不知 ...

我是这样写的  但就是不显示出来矩形
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
 楼主| scarsss 发表于 2023-4-10 21:26:18 | 显示全部楼层
scarsss 发表于 2023-4-10 21:23
我是这样写的  但就是不显示出来矩形

halcon里就一句话 dev_display
qt里c++代码和就变成了 if (HDevWindowStack::IsOpen())
          DispObj(ho_r0n1, HDevWindowStack::GetActive());
然后就显示不出
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
spx111111 发表于 2023-4-11 08:15:41 | 显示全部楼层
scarsss 发表于 2023-4-10 21:26
halcon里就一句话 dev_display
qt里c++代码和就变成了 if (HDevWindowStack::IsOpen())
          Disp ...

建议你研究一下C#/C++的研究代码,有部分是尘余代码,影响运行的,直接执行会报错误的。
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
绝地武士 发表于 2023-4-11 08:59:38 | 显示全部楼层
显示前面的类似这句if (HDevWindowStack::IsOpen()) 可以不要,直接用你内部记录的窗口句柄即可。这个是Halcon自带的窗口栈管理,如果这样用必须要HDevWindowStack::push窗口句柄进去,而且还需要HDevWindowStack::active(窗口)这种完整的栈运用才能正常找到你的窗口。
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
 楼主| scarsss 发表于 2023-4-13 19:23:04 | 显示全部楼层
绝地武士 发表于 2023-4-11 08:59
显示前面的类似这句if (HDevWindowStack::IsOpen()) 可以不要,直接用你内部记录的窗口句柄即可。这个是Hal ...

感谢  解决了
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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