日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux下调用python脚本,Linux下QT调用Python脚本的解决方案,Qt,python,一种,解决办法

發布時間:2025/3/8 linux 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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,一种,解决办法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。