《itk实用demo》-vtk视图ITK取点

版权声明:本文为博主原创文章,转载请注明出处,谢谢 https://blog.csdn.net/rabbitbride/article/details/82422901

Image 转化 vtkPolydata

#include "vtkCellPicker.h"
#include "vtkSmartPointer.h"
#include "vtkMath.h"

void upoords(vtkObject* obj)
{
    // 获取交互器
    vtkRenderWindowInteractor* iren = vtkRenderWindowInteractor::SafeDownCast(obj);

    // 获取鼠标的当前位置
    int event_pos[2];
    iren->GetEventPosition(event_pos);

    //*三维点拾取
    vtkSmartPointer<vtkCellPicker> picker = vtkSmartPointer<vtkCellPicker>::New();    
    picker->SetTolerance(0.005);
    picker->Pick(event_pos[0], event_pos[1], 0.0, windows[1]->GetRenderWindow()->GetRenderers()->GetFirstRenderer());    
    picker->GetPickPosition(pos);
    //picker->GetSelectionPoint(pos);

    QString str;

    //****************点坐标转换**************    
    vtkIdType ptId = dsource->GetCurrentData()->originalImage->FindPoint(pos);
    if ( ptId == -1 ){
        str.sprintf("Off Image");
    }else{
        // find the nearest implicit point to pos
        double closestPt[3];    
        dsource->originalImage->GetPoint(ptId,closestPt);

        double origin[3];
        dsource->originalImage->GetOrigin(origin);
        double spacing[3];
        dsource->originalImage->GetSpacing(spacing);
        int extent[6];
        dsource->originalImage->GetExtent(extent);

        int iqtemp;    
        for (int i = 0; i < 3; i++)
        {
            // compute world to image coords
            iqtemp = vtkMath::Round((closestPt[i]-origin[i])/spacing[i]);

            // we have a valid pick already, just enforce bounds check
            iq[i] = (iqtemp < extent[2*i])?extent[2*i]:((iqtemp > extent[2*i+1])?extent[2*i+1]:iqtemp);

            // compute image to world coords
            //q[i] = iq[i]*spacing[i] + origin[i];
        }    
        pickedPixel = dsource->originalImage->GetScalarComponentAsDouble(iq[0],iq[1],iq[2],0);
        str.sprintf("(x=%d : y=%d : z=%d, pixel=%f", iq[0], iq[1], iq[2], pickedPixel);        
    }

    dsource->SeedList(iq[0],iq[1],iq[2],pickedPixel);
}

猜你喜欢

转载自blog.csdn.net/rabbitbride/article/details/82422901