VTK:二维图像拾取时切换图片时出现红框

在使用VTK进行二维图像坐标拾取时,切换图片时出现红色框框并导致图像位置偏移。问题源于拾取操作未正确释放前一张图片资源。通过查看源码,发现vtkRenderWindowInteractor的默认拾取类vtkPropPicker在拾取前的If条件判断,修改此部分代码可解决红框问题。此外,深入理解vtkAssemblyPath在处理包含vtkProp对象场景中的作用也有助于解决问题。
摘要由CSDN通过智能技术生成

    这是我在做项目时候遇到的一个实际问题,虽然不影响使用,但却实际存在,会为软件使用带来一些不便。

    问题描述:使用VTK实现二维图像的坐标点拾取,当切换到下一张图片时候会发现出现一个红色的框框。并且往往导致你当前图片显示位置偏移

   出现问题的原因:在切换图片时 调用GetNumberofItems()方法 可以看到当我们没有进行坐标拾取时候 Prop的个数为1,在拾取之后,发现Prop个数变为2;

由此猜想:虽然看上去只有一张图片,但实际上你的前一张图片只是隐藏了,并没有从内存中释放出去,应该是坐标拾取器仍然占用着上一张图片资源导致无法释放。由此也就可以说明为什么会出现红框(表示的是对上一张图片仍处于选中状态)。位置出现偏移也就能解释通了:因为渲染窗口中出现两个Actor(其中一个是隐藏的),所以每次重置相机时是考虑的是维度最大图片如何完全显示在渲染窗口。


  问题解决:基本查不到有用资料,只能去看源码,vtkRenderWindowInterator默认的拾取类是vtkPropicker; 再看这个累的源码时候,发现在拾取坐标之前有一个If语句判断,只有是真的情况下才可以调用WorldPointPicker类进行点坐标拾取。

// Have the renderer do the hardware pick
  this->SetPath(
    renderer->PickPropFrom(selectionX, selectionY, this->PickFromProps));

  // If there was a pick then find the world x,y,z for the pick, and invoke
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值