Vaa3D加快调试方法、快速屏蔽对应功能、自动载入图像和marker等、自动选取文件保存位置、marker点即时更新

Vaa3d调试的主要步骤中一般包括打开图片、打开marker文件、打开swc文件这三个打开操作,GUI参数的输入操作,对话框选取文件保存位置的操作等,这几个步骤都会占用调试的时间而且当针对同一张图片时,图片、marker文件、参数等基本不发生变化,这就给我们节省调试时间带来了方便。

同时,将程序分块并加入在if(1)模块内可以保证当不需要该功能时可以快速屏蔽该功能。
同时,每一个if(1)

快速屏蔽对应功能

通过预处理命令,能够实现对应的功能的开关。

#define readMarkerFromFile 1


if(readMarkerFromFile)
{
	//readMarkerFromFile
}

自动读入图像、marker、swc

    //首先给定图片文件名、marker文件名、swc文件名
    //在已打开图片、已存在marker、swc时不执行该代码,从而使得能够避免意外
	QString img_name_need_read;
    QString marker_name_need_read;
    QString nt_name_need_read;
    unsigned char threthold;
    switch (2) {
    case 1:
        //fruitfly5_cut.tif
        img_name_need_read="***\\fruitfly5_cut.tif";
        marker_name_need_read="***\\fruitfly5_cut.tif_1.marker";
        nt_name_need_read="***\\fruitfly5_cut.tif_oneBranch_sort.swc";
        threthold=20;
        break;
    case 2:
        //fruitfly1
        img_name_need_read="***\\fruitfly4_cut.tif";
        marker_name_need_read="***\\fruitfly4_cut.tif_1.marker";
        nt_name_need_read="***\\fruitfly4_cut.tif_oneBranch_sort.swc";
        threthold=20;
        break;
        
    default:
        return;
    }
//此处读取图片
if(1)
    {
    
        //fetch image
        QFileInfo img_name_info(img_name_need_read);
        if(!img_name_info.exists())
        {
            cout<<"!img_name_info.exists()"<<endl;
            return;
        }
        if(!callback.currentImageWindow())
        {
            cout<<"read image from img_name_need_read"<<endl;
            Image4DSimple * newimg=callback.loadImage(img_name_need_read.toUtf8().data());
            v3dhandle newwin=callback.newImageWindow(img_name_need_read);
//                    Image4DSimple
            callback.setImage(newwin,newimg);
        }
    }
    v3dhandle curwin = callback.currentImageWindow();
    if (!curwin)
    {
        v3d_msg("You don't have any image open in the main window.");
        return;
    }
NeuronTree nt;
if(1)
    {
    //此处nt只用于处理  没有显示在图上   如需显示可以自行添加代码
//        cout<<"read SWC from 3d Viewer  "<<endl;
        bool exist_neuronTree=false;
        QList <V3dR_MainWindow *> list_3dviewer = callback.getListAll3DViewers();
        if (list_3dviewer.size() >= 1)
        {
            V3dR_MainWindow *surface_win = list_3dviewer[0];
            if (surface_win)
            {
                QList<NeuronTree> * mTreeList = callback.getHandleNeuronTrees_Any3DViewer(surface_win);
                if(mTreeList->size()>0)
                {
                    nt=mTreeList->at(mTreeList->size()-1);
                    exist_neuronTree=true ;
                }
            }
        }
        if(!exist_neuronTree)
        {  
            cout<<"read neuronTree from nt_name_need_read"<<endl;
            QFileInfo nt_name_info(nt_name_need_read);
            if(!nt_name_info.exists())
            {
                cout<<"!nt_name_info.exists()"<<endl;
                return;
            }
            nt=readSWC_file(nt_name_need_read);
            if(nt.listNeuron.isEmpty())
            {
                cout<<"nt.listNeuron.isEmpty()"<<endl;
                return;
            }
        }
        cout<<"read SWC from 3d Viewer over  "<<endl;   
    }
    if(1)
    {
    //fetch marker
        QFileInfo marker_name_info(marker_name_need_read);
        if(!marker_name_info.exists())
        {
            cout<<"!marker_name_info.exists()"<<endl;
            return;
        }
        if(callback.getLandmark(curwin).isEmpty())
        {
        //避免已经输出marker而覆盖
            cout<<"read marker from marker_name_need_read"<<endl;
            LandmarkList s=ReadLandmarkList(marker_name_need_read);
            if(s.isEmpty())
            {cout<<"s.isEmpty()"<<endl;return;}
            callback.setLandmark(curwin,s);
            callback.open3DWindow(curwin);
            callback.pushObjectIn3DWindow(curwin);
        }
    }

选取文件保存位置。

if(1)
    {
        QString swcfile="D:\\111\\";
        QFileInfo fileinfo(QString(p4DImage->getFileName()));
        swcfile.append(fileinfo.baseName());
        swcfile.append(QString::number(rand()%200+100));
        //加100保证随机数都是三位数
        swcfile.append("_tracing.swc");
        writeSWC_file(swcfile,outTree);
        cout<<"over\n\n"<<endl;
        
    }

marker点在程序运行完成以后即时更新

if(1)
    {
    	//这样可以避免在3D界面上按下“Sync Tri-view Objs”marker点才更新显示的问题
		//从而加快调试进度
    	callback.open3DWindow(curwin);
        callback.setLandmark(curwin,needtoshow);
        callback.pushObjectIn3DWindow(curwin);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值