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.pswp.cn/news/533002.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/533002.shtml
英文地址,請注明出處:http://en.pswp.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;來…