Itk:ImageRegionIterator GetIndex()调用使程序成为segfault
Itk: ImageRegionIterator GetIndex() call makes the program segfault
我正在Ikt::Image的一个区域上迭代。根据程序的输入,此图像可能会有所不同。总结程序的主要部分:
//inputMask is an input and contains a label image
typedef typename itk::ImageRegionIterator<TInputImage> InputIteratorType;
std::auto_ptr<InputIteratorType> pIit;
if(someBool)
{
// here I remove some labeled areas, based on some characteristics
// ...
// relabeledMask = result of the evaluations
InputIteratorType iit(relabeledMask, relabeledMask->GetLargestPossibleRegion());
pIit.reset(&iit);
}
else
{
InputIteratorType iit(inputMask, inputMask->GetLargestPossibleRegion());
pIit.reset(&iit);
}
for (pIit->GoToBegin(); !pIit->IsAtEnd(); ++(*pIit))
{
if (pIit->Value() > 0)
{
typename TInputMask::IndexType seed = pIit->GetIndex();
// remaining part of the program
// ...
//
}
}
现在。。。该最后一个CCD_ 1仅在CCD_。如果是真的,程序在typename TInputMask::IndexType seed = pIit->GetIndex();
行与Segmentation fault (core dumped)
一起崩溃。
此外,如果我把这个for
放在if(someBool)
里面(就在pIit.reset(&iit);
之后),程序就不会崩溃。
最后要注意的是,如果我将relabeledImage
保存为Nifty文件,我可以毫无问题地看到卷的每一张幻灯片。
有什么想法吗?
itk::ImageRegionIterator
等,持有指向图像的弱指针
https://itk.org/Doxygen410/html/classitk_1_1WeakPointer.html
因此很可能你的CCD_ 10被破坏了。另一种方法是有条件地参考图像:
TInputImage::Pointer imageToIterate;
if ( /* something */ )
{
// do stuff
theFilter->Update();
imageToIterate = theFilter->GetOutput();
}else
{
// do other stuff
}
typedef typename itk::ImageRegionIterator<TInputImage> InputIteratorType;
InputIteratorType iit(imageToIterate,imageToIterate->GetLargestPossibleRegion());
// iterate!
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- C++,系统无法执行指定的程序
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 重载操作程序时出错>>用于类中的字符串 memebr
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 试图在visual studio上用C++创建一个桌面应用程序
- 模板元程序查找相似的连续类型名称
- 简单链接列表程序中的Destructor segfault
- LLVM IR,简单的程序给出segfault
- 当一个对象试图访问它的某个属性时,程序是否可能发送Segfault
- 每次运行此程序时,我都会不断获得Segfault,但我不明白为什么
- 是否可以在异常(SEGFAULT)错误后自动重新启动程序
- 在数据流处理程序中获取segfault
- 安卓系统:使用静态libgnustl的本机C++程序的SEGFAULT
- 与文件i/o相关的c++程序末尾的Segfault
- 将字符串变量传递给boost::ASIO读取器/处理程序会导致segfault
- 应用程序退出时出现SegFault
- Itk:ImageRegionIterator GetIndex()调用使程序成为segfault