V3D中关于dofunc的使用

利用控制台可以直接调用插件。直接调用插件的好处是免去了打开程序的等待时间、打开图片的时间、拖入swc和marker等的时间,可以加速调试。
不方便的是插件的数值输入可能不太方便。
采用控制台直接运行方式,调用的是dofunc,从图形界面上运行的是domenu。
调用格式如下

vaa3d -x plugin_name -f funcname -i <inimg_file> -o <outswc_file> -p <para>

比如调用APP2的示例如下

"D:\v3d_external\bin\vaa3d_msvc.exe"   /x "D:\v3d_external\bin\plugins\neuron_tracing\Vaa3D_Neuron2\vn2.dll" /f "app2"  /i "C:\Users\204\Desktop\data analyse\friutfly\fruitfly-1\fruitfly1.v3draw" 

ubuntu上是-x,windows上是/x
在路径包含空格的时候,需要在两边加上双引号。

APP2代码中的参数解析,可以参考如下:

QString plugin_name = "vn2";
QString func_name = "app2";
V3DPluginArgList input;
V3DPluginArgList output;
V3DPluginArgItem arg_in1, arg_in2, arg_out1;
arg_in1.type="random"; vector<char*> arg_imgfile;
arg_imgfile.push_back(outimg_file.toUtf8().data());
arg_in1.p = (void *) & arg_imgfile; input << arg_in1;

arg_in2.type="random"; vector<char*> arg_para;
arg_para.push_back(QString("NULL").toUtf8().data());
arg_para.push_back(QString("0").toUtf8().data());
arg_para.push_back(QString("-1").toUtf8().data());
arg_para.push_back(QString("0").toUtf8().data());
arg_in2.p = (void *) & arg_para; input << arg_in2;

arg_out1.type="random"; vector<char*> arg_outswc;
arg_outswc.clear();
arg_out1.p = (void *) & arg_outswc; output << arg_out1;
callback.callPluginFunc(plugin_name,func_name,input,output);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值