如何使用镂空图像创建3D表面?

时间:2016-10-19 07:23:15

标签: opencv 3d vtk surface

我正在使用OpenCV 3.1(使用VTK7.1)并尝试使用2D图像创建类似3D的表面。

这个想法很简单:

  1. 输入连续图像(视频流的每一帧)

  2. 每帧的骨架化处理。

  3. 在三维空间中堆叠。这是问题所在: 如何将图片转换为点云以及如何显示?

  4. 以下是代码的一部分:

    for (;;)
    {
        inStream >> singleFrm;
    
        if (singleFrm.empty()) {
            break;
        }
        else {
    
            imshow("Origin", singleFrm);
            singleFrm = singleFrm(roi);
            cvtColor(singleFrm, roiSkelFrm, CV_RGB2GRAY);
            const Size2d size(roiSkelFrm.cols, roiSkelFrm.rows);            
    
            threshold(roiSkelFrm, roiSkelFrm, 80, 255, cv::THRESH_BINARY);
            thinning(roiSkelFrm, roiSkelFrm);
    
            stackChFrm[0] = roiSkelFrm;
            stackChFrm[1] = roiSkelFrm;
            stackChFrm[2] = roiSkelFrm;
    
            cv::merge(stackChFrm, 3, skelFrm);
            skelFrm.convertTo(skelFrm, CV_32FC3);           
    
            viz::WCloud aCloudSlice(skelFrm, viz::Color::white());          
            myWindow.showWidget("image", aSlice);
    
            myWindow.spinOnce(1, true);
    
            if (waitKey(1) == 27)
                break;
        }
    }
    
    while (!myWindow.wasStopped())
    {
        myWindow.spinOnce(1, true);
    }  
    

0 个答案:

没有答案