visualize_object_model_3d显示3维图像的问题

Wesley13
• 阅读 1497

原问题:

我把halcon代码导出成C++代码。并在QT中调用。

其中用到了 visualize_object_model_3d

但是,目前只能单独弹出一个窗口来显示3维图像,不能在QT的控件框中显示。

像这样单独在一个窗口中显示,是可以的。

visualize_object_model_3d显示3维图像的问题

但是像这样,在QT生成的框中显示就不行。程序就一直卡住不动了。

visualize_object_model_3d显示3维图像的问题

解决方法:

在QT中也初步解决了这个问题。

与C#中的Application.DoEvents(); 语句类似,QT中有 QCoreApplication :: processEvents(); 

把这句话嵌入到Halcon生成的C++源代码里。

我目前写在 visualize_object_model_3d 函数中的每一个循环里面的开头,就可以了。

visualize_object_model_3d显示3维图像的问题

使用visualize_object_model_3d函数时,右下角都会显示一个continue按钮。

而halcon代码中,不提供去掉continue按钮的选项。

而我在QT中调用visualize_object_model_3d函数,并查看源码,成功去掉了continue按钮。

这张图是有continue按钮的,在右下角

这张图是没有的。

其实我现在也不是很懂原理,只是修改了一下源码调出来了。具体原理还没有弄懂。

有感兴趣的同学可以继续研究。

具体方法如下:

下面都需要修改visualize_object_model_3d函数的定义源码。

1.取消显示Continue的按钮

在dump_image_output函数中,注释掉最后的disp_continue_button(hv_WindowHandleBuffer);语句。

这是控制是否显示Continue的按钮的。

  //Display the 'Exit' button
  if (0 != (hv_DisplayContinueButton==HTuple("true")))
  {
      //todo //disp_continue_button(hv_WindowHandleBuffer); }

注释掉它之后,可以发现没有Continue的按钮了,但是点击原来Continue的按钮的区域,发现还是可以进行下一步。

2.取消点击操作

找到visualize_object_model_3d函数的定义。

首先是hv_WaitForButtonRelease变量,这是定义了两种模式,具体什么含义代码里有注释。(我也没太看懂)

hv_WaitForButtonRelease = "true";

然后我们向后继续看代码,找到下面代码这个地方。

我们发现根据hv_WaitForButtonRelease值的不同,有两种处理方式。

不管你选择何种处理方式,你只需要保证hv_ButtonReleased这个变量一直为0即可。如果它为1,就代表可以点击,如果为0,就不能点击。

              if (0 != (hv_WaitForButtonRelease==HTuple("true")))
              {
                while (0 != 1) { GetMpositionSubPix(hv_WindowHandle, &hv_GraphButtonRow, &hv_GraphButtonColumn, &hv_GraphButton); if (0 != (HTuple(hv_GraphButton==0).TupleOr(hv_GraphButton==HTuple()))) { if (0 != (HTuple(HTuple(HTuple(hv_GraphButtonRow>((hv_Height-hv_TextHeight)-25)).TupleAnd(hv_GraphButtonRow<hv_Height)).TupleAnd(hv_GraphButtonColumn>((hv_Width-hv_TextWidth)-15))).TupleAnd(hv_GraphButtonColumn<hv_Width))) { //todo hv_ButtonReleased = 0; } else { hv_ButtonReleased = 0; } // break; } //Keep waiting until mouse button is released or moved out of the window } } else { //todo hv_ButtonReleased = 1; }

             Halcon|读取3D相机点云数据

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表(关于日期时间时分秒显示不出来)
在使用皕杰报表设计器时,数据据里面是日期型,但当你web预览时候,发现有日期时间类型的数据时分秒显示不出来,只有年月日能显示出来,时分秒显示为0:00:00。1.可以使用tochar解决,数据集用selecttochar(flowdate,"yyyyMMddHH:mm:ss")fromtablename2.也可以把数据库日期类型date改成timestamp
Stella981 Stella981
3年前
JS 苹果手机日期显示NaN问题
问题描述newDate("2019122910:30:00")在IOS下显示为NaN原因分析带的日期IOS下存在兼容问题解决方法字符串替换letdateStr"2019122910:30:00";datedateStr.repl
Stella981 Stella981
3年前
Django之Django模板
1、问:html页面从数据库中读出DateTimeField字段时,显示的时间格式和数据库中存放的格式不一致,比如数据库字段内容为2012082616:00:00,但是页面显示的却是Aug.26,2012,4p.m.答:为了页面和数据库中显示一致,需要在页面格式化时间,需要添加<td{{dayrecord.p\_time|date:
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Stella981 Stella981
3年前
JOptionPane修改图标
1.在Linux平台下.JOptionPane会显示Java默认的图标,在window平台不显示图标,如何替换这个图标了?2JOptionPane.setIcon(Icon)修改的是内容区域的icon,而不是左上角的Icon.所以需要通过修改Jdialog/Frame的图标来达到修改默认图标的问题.3.代码:if(JOptio
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这