linux下调用python脚本,Linux下QT调用Python脚本的解决方案,Qt,python,一种,解决办法
最近在做一个深度学习对图片中对象识别效果的检测工具,其主要功能就是将自己标注的图片与识别结果图片进行对比然后计算识别的准确等参数,并提供原图与结果图片的显示功能。
脚本主要完成识别与计算功能,QT完成数据的整理显示与图片的显示。
我们可以直接用
qt的QProcess调用bash来执行运行脚本的命令
,获取结果数据则有两种方式:
一是在
python脚本中将结果写到文本中,脚本结束后由qt读取
。
二是在
脚本中用print按一定格式将结果输出,在Qt中可用QProcess的信号槽机制获取输出结果
。
void TagDetection::startDetect_slot()
{
p = new QProcess(this);
//当脚本中的结果全部(注意是全部)print完成后进入到OnReadData_slot
connect(p, SIGNAL(readyReadStandardOutput()), this, SLOT(OnReadData_slot()));
//组合命令,带入参
QString labelsStr = QString::fromStdString(m_Vecmodels.at(m_CurrentLabel).types).split(" ").join("/");
QStringList cmdList;
cmdList<
<<:fromstdstring>
<<:fromstdstring>
<
<<:fromstdstring>
<<:fromstdstring>
<<:fromstdstring>
<<:fromstdstring>
<<:fromstdstring>
<<:fromstdstring>
<<:fromstdstring>
<<:fromstdstring>
<<:fromstdstring>
QString cmd = cmdList.join(" ");
qDebug()<
//开始执行
p->start(cmd);
//等待提示框
QApplication::setOverrideCursor(Qt::WaitCursor);//设置鼠标为等待状态
QProgressDialog progress;
progress.setWindowTitle(codecMain->toUnicode("提示"));
progress.setLabelText(codecMain->toUnicode("正在检测中..."));
progress.setCancelButton(false);
progress.setRange(0, 60000);//设置范围
progress.setModal(true);//设置为模态对话框
progress.show();
for (int i = 0; i < 3000 ; i++)
{
QThread::msleep(100);
QCoreApplication::processEvents(QEventLoop::ExcludeUserInputEvents);
progress.setValue(i);
//进入槽函数则停止等待
if(g_IsDetectedDone)
{
g_IsDetectedDone = false;
break;
}
//用户取消的话则中止
if (progress.wasCanceled())
{
break;
}
}
QApplication::restoreOverrideCursor();
progress.close();
QMessageBox::warning(this, codecMain->toUnicode("提示"), codecMain->toUnicode("检测结束!"));
}
槽函数如下:
//识别完成
void TagDetection::OnReadData_slot()
{
//改变标志位停止等待
g_IsDetectedDone = true;
//获取结果
QString Pyresult = codecMain->toUnicode(p->readAllStandardOutput());
qDebug()<
ui.textEdit->setText(Pyresult);
//关闭bash
p->kill();
p->close();
delete p;
//数据处理...
//或者读取识别结果文本
QFile file("result.txt");
QStringList result;
if (file.open(QIODevice::ReadOnly | QIODevice::Text))
{
while (!file.atEnd())
{
//按行读取
QByteArray line = file.readLine();
QString str(line);
result.append(str);
qDebug() << str;
}
file.close();
}
//数据处理...
}
linux下调用python脚本,Linux下QT调用Python脚本的解决方案,Qt,python,一种,解决办法相关推荐
- linux 双显卡 黑屏 amd,ubuntu上AMD显卡驱动黑屏问题的一种解决办法
Linux上的AMD显卡驱动没有Windows上面的那么友善,不过好在它从2000系列的都始终在支持者更新.先去AMD官网下载一个Linux版本的显卡驱动(注意分清32/64位),如果你以前用系统设置 ...
- java执行python返回null_[转]java调用python脚本以及通过Process.waitFor()直接调用python模块返回错误代码1的一种解决办法...
常见的java调用python脚本方式 通过jython提供的类库实现 通过Runtime.getRuntime()开启进程来执行脚本文件 通过jython提供的类库实现 通过jython实现的话,我 ...
- Linux系统安装驱动过程中ko文件加载错误(Required key not available)的解决办法
Linux系统安装驱动过程中ko文件加载错误(Required key not available)的解决办法 问题描述 在Ubuntu上使用CP210x USB转UART设备时需要安装驱动程序(CP ...
- linux三个命令模式切换,ubuntu16.04命令行模式和图形界面互相切换的两种解决办法,...
ubuntu16.04命令行模式和图形界面互相切换的两种解决办法, 在ubuntu中,我们可以有两种工作模式,一种是纯字符的命令行模式,这种界面没有那么好操作,而且对命令要求比较熟悉,比较适合专业人士 ...
- linux装win之后C盘爆满,win7c盘突然爆满的三种解决办法
win7c盘突然爆满怎么办?前段时间有用户和我们反馈,自己电脑原来都是好好的,突然有一天变得非常卡顿,打开计算机一看C盘处于爆满的红色状态,明明之前还有很多空间,这是什么原因呢?小编今天就来告诉大家w ...
- Java 的main方法中无法调用自身所在类的其他方法的两种解决办法
前言 编程时我们会发现有时main方法中调用自身所在的类的其他方法时,发现无法调用,错误调用情况如下 错误情况代码 此处第3行调用test方法报错 public class Demo1{public ...
- linux下qt触摸屏没反应怎么办,QT移植后触摸屏无法使用(不好使)的解决办法!!!...
我的只适用于飞凌的OK610其他的请作为参考 话说我弄触摸屏都弄好几天了,看了网上的好多问题和解决办法都不好使,也没个头绪 后来一个闪念,既然飞凌的自带的QT应用程序触摸屏好使,但我的启动后就不好使了 ...
- linux字体怪异_在 linux 字体下的显示问题及几种解决办法
将润乾报表部署到 linux 系统上时,往往在报表展现时会出现一些显示问题,例如:报表没有自动换行.统计图或表头斜线上的中文变成小方框.报表导出 pdf 后中文出问题等. 出现此类问题主要为操作系统中 ...
- Linux下使用Nginx端口转发出现502错误的一种解决办法
今天圈里的一个朋友在配置完nfinx80端口转发到5000后,发现一个问题 问题描述: 正确配置了Nginx80端口转5000端口,在CentOS上把.Net core WebAPI站点上传到cent ...
- 【Linux】12.ssh登录服务器一直被拒绝、以及 ssh连接总自己断开 的解决办法
ssh登录服务器一直被拒绝.以及 ssh连接总自己断开 的解决办法 1.ssh登录服务器一直被拒绝的解决办法 ssh登录服务器,密码正确但是一直出现下面这种情况: Permission denied, ...
最新文章
- Android自定义View详解,知乎上转疯了!
- 使用Windows Azure HDInsight Service在云上压缩大数据
- 【week3】psp (技术随笔)
- Python-OpenCV学习--USB摄像头读取图像上下翻转
- Selenium2+python自动化33-文件上传(send_keys)
- JavaWeb --第一章Web基本概念
- Controller接口控制器(4)
- C-Free 5.0下载和安装教程
- MySQL 相关知识细节及解析
- All about the “paper”
- Chrome 启动参数
- 西门子g120变频器接线图_西门子1500PLC通过工艺对象对G120变频器组态和调试
- JS实现双十一倒计时抢购效果
- !EOF简单说明,常用来结束while循环
- 计算标准差、方差的Python程序
- 有限状态机详解(转载)
- horizon服务主要模块_Horizon组件安装详解 - 远程连接OpenStack服务
- 厦大生物科学类要考计算机等级吗,厦门大学生命科学学院调剂经验分享
- 【恒指早盘分析】9.10恒指今日总结及后市思路
- python 使用selenium 批量获取url的cookies
热门文章
- 工作流实战_28_flowable 任务多实例
- MyBatis-Plus_AR 模式
- 第八篇: 消息总线(Spring Cloud Bus)(Finchley版本)V2.0_dev
- python如何仿写文章_python,python3.x_求助,用python仿写以下代码,python,python3.x,java - phpStudy...
- .net core razor ajax,.NET CORE Razor Pages Ajax 调用 C# 方法
- linux 编译 php7_Linux下编译安装PHP7
- 对数周期天线hfss建模_HFSS也有金手指,FADDM招式详解
- linux查看pid 对应的程序_资深程序员总结:分析 Linux 进程的 6 个方法,我全都告诉你...
- 发动机压缩比怎么计算公式_怎么判断发动机有积碳,发动机积碳多的症状有哪些...
- 远程服务器 上传公钥,SecureCRT+Ubuntu SSH服务器的远程公钥登陆