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();

}

//数据处理...

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/533002.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux获取bind返回值信息,v$sql_bind_capture 获取绑定变量信息

截取自v$sql_bind_capture 对于游标中定义的每一个绑定变量都会有视图中的一行对应。主要包含三个部分&#xff1a;指向父游标(hash_value, address)和子游标(hash_value, child_address)的信息,变量类型定义&#xff0c;变量的值(不包含复杂的值&#xff1a;LONG,LOB,和…

linux boost教程,Linux上安装使用Boost入门指导

获得boostboost分布只需要头文件的库使用boost建立一个简单的程序准备使用boost二进制文件库把你的程序链接到boost库1.获得boost解压2.boost分布boost_1_46_1.........................boost根目录boost/.....................................所有boost头文件libs/..........…

vps如何linux内核4.19,Linux kernel 4.19 RC1 发布,一个相当大的版本

原标题&#xff1a;Linux kernel 4.19 RC1 发布&#xff0c;一个相当大的版本Linus Torvalds今天发布了第一个候选版本(RC)&#xff0c;正式启动了即将推出的Linux 4.19内核系列的开发周期。自Linux 4.18内核系列推出以来已经过去两周了&#xff0c;因此下一个主要版本Linux ke…

linux下变量名长度,Linux中shell的变量介绍

Linux中shell的变量介绍发布时间&#xff1a;2020-06-24 16:20:39来源&#xff1a;亿速云阅读&#xff1a;112作者&#xff1a;元一这期内容当中的小编将会给大家带来有关Linux中shell的变量介绍&#xff0c;以专业的角度为大家分析和叙述&#xff0c;阅读完这篇文章希望大家可…

0 0/2 * * * ? linux文本含义,Linux基础2.0

1、硬盘使用的步骤识别硬盘 > 分区规划 > 格式化 > 挂载使用2、列出创建ext3、ext4、xfs、fat32文件系统的格式化工具及用法mkfs.ext3 分区设备路径mkfs.ext4 分区设备路径mkfs.xfs 分区设备路径mkfs.vfat -F 32 分区设备路径3、开机自动挂载配置文件及6个字段/etc/fs…

linux如何加载镜像,linux可以加载iso镜像文件到启动项吗

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼楼主的需求描述不清&#xff0c;不作评述。只说下关于楼上一些吧友提到的grub loopback设备可mount iso并读取其中文件的功能未读过grub1/2的源码&#xff0c;不太了解其实现原理&#xff0c;但从应用上来说&#xff0c;这个设备不…

10个linux awk文本处理经典案例,关于AWK的10个经典案例

1、分析访问日志(Nginx为例)日志格式&#xff1a; $remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for" 统计访问IP次数&#xff1a; # awk…

arm linux 存储,linux arm的存储分布那些事

原标题&#xff1a;linux arm的存储分布那些事linux arm 内存分布总览上图是linux的arm的虚拟地址分布总览&#xff0c;我们按从低地址到高地址的顺序逐个描述&#xff0c;每项的描述包括如下的内容的组和&#xff1a;地址范围大小&#xff0c;虚拟转物理的接口函数&#xff0c…

linux恢复终端默认配置,以gnome-terminal为例,修改gnome3 的默认配置,

以gnome-terminal为例&#xff0c;修改gnome3 的默认配置&#xff0c;gnome连续几个版本的terminal默认配置文件都是同一个配置文件“b1dcc9dd-5262-4d8d-a863-c897e6d979b9”。这是因为gnome的developers编辑了这个配置文件并作为gnome-terminal的默认配置文件&#xff0c;用来…

c语言字符串文库总结,C语言程序设计入门:字符串函数

版权声明&#xff1a;以上文章中所选用的图片及文字来源于网络以及用户投稿&#xff0c;由于未联系到知识产权人或未发现有关知识产权的登记&#xff0c;如有知识产权人并不愿意我们使用&#xff0c;如果有侵权请立即联系&#xff1a;55525090qq.com&#xff0c;我们立即下架或…

vs写c语言能用scanf,【PAT编写代码时遇到的问题】vs中使用scanf(%c,x);

首先&#xff0c;为了在VS中使用scanf&#xff0c;可以在程序开头加上#pragma warning(disable:4996)昨天在编写程序的时候&#xff0c;突然发现在循环中使用scanf("%c",&x);的时候&#xff0c;发现结果很奇怪&#xff0c;只能读入和输出我所输入的数据的一半。后…

大数计算器概念c语言,用C语言求两个超大整数的和

用C语言求两个超大整数的和在生活中&#xff0c;我们经常需要计算非常大的数&#xff0c;但是任何一种计算器都有计算范围&#xff0c;一旦超过计算范围就会有精度的损失。或许有同学认为我们可以通过程序来解决&#xff0c;比如对于C语言来说&#xff0c;我们定义一个long lon…

3 5的二维数组C语言程序,C语言及程序设计提高例程-33 二维数组元素的引用

贺老师教学链接 C语言及程序设计提高 本课讲解输入输出二维数组元素#include int main(){int s[3][5], i, j;printf("Input 3*5 numbers\n");for (i0; i<3; i)for(j0; j<5; j)scanf("%d", &s[i][j]);for (i0; i<3; i){for(j0; j<5; j)pri…

android程序 幻灯片,Android:ViewPager制作幻灯片

public class MainActivity extendsActivity {//ViewPagerprivateViewPager viewpager;//幻灯片图片资源private int [] imgArray{R.drawable.view1,R.drawable.view2,R.drawable.view3};//图片数组private ArrayListviewlist;privateImageView imageView;//点点privateViewGro…

android获取图片方向并旋转,Android 判断imageview角度并旋转

/*** 读取照片exif信息中的旋转角度** return角度 获取从相册中选中图片的角度*/public static float readPictureDegree(String path) {int degree 0;try {ExifInterface exifInterface new ExifInterface(path);int orientation exifInterface.getAttributeInt(ExifInterf…

android键盘移动光标,在Android键盘上完成键

Jos Silva..12代替ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_ENTER));尝试ic.performEditorAction(EditorInfo.IME_ACTION_GO);执行的操作应该是在EditorInfo上定义的操作,它将在方法onStartInputView上传递给您要在操作之间切换,请使用:(sEditorI…

android 远程桌面连接闪退,远程桌面一点连接就闪退,不能弹出输入账号密码窗口...

您好&#xff0c;感谢您在我们论坛发帖。首先&#xff0c;按照您的描述&#xff0c;正常情况下&#xff0c;您的客户端可以远程连接您的服务器&#xff0c;输入IP和端口之后&#xff0c;会弹出验证框&#xff0c;输入账户密码之后即可进入服务器的桌面。当出现问题时&#xff0…

com.sec.android.app.smartclipservice,EPR Aerospace News

The World Cup Ball And Its Astonishing Effects Can Be Easily Explained Through TheTheory Of Dynamic Interactions, Which Also Applies To The Flight Of The Boomerang.The official World Cup ball, the so called “Jabulani”, which has been object of a lot of c…

signature=5bcdc11c0d509d82e0d44c544cfad97b,江苏省职称计算机考试新职称光盘试卷

试卷一1、世界上第一台电子数字计算机采用的主要逻辑部件是(D)A光电管 B继电器 C晶体管 D电子管2、世界上首次提出存储程序计算机体系结构的是(D)A艾伦〃图灵 B莫奇莱 C乔治〃布尔 D冯〃诺依曼3、计算机最主要的工作特点是(A)A存储程序与自动控制 B高速度与高精度C可靠性与可用…

html表格内文字置顶,css如何让table里的字居中?

css如何让table里的字居中&#xff1f;下面本篇文章就来给大家介绍一下使用CSS让table里字居中的方法。有一定的参考价值&#xff0c;有需要的朋友可以参考一下&#xff0c;希望对大家有所帮助。在CSS中&#xff0c;可以通过设置text-align: center;和vertical-align:middle;来…