日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

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

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