visualize_object_model_3d显示3维图像的问题

原问题:   我把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相机点云数据

             
   
上一篇:fg和bg前后台调度命令


下一篇:Memcached学习(四)--hashtable