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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【课题报告】OpenCV 抠图项目实战(10)PyQt5 使用

發布時間:2025/3/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【课题报告】OpenCV 抠图项目实战(10)PyQt5 使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Python 小白的課題報告—OpenCV 摳圖項目實戰(10)PyQt5 使用

本系列是 Python 小白的課題作業《基于OpenCV 的圖像分割和摳圖》。
需要說明的是,本系列并不能算是 OpenCV 的摳圖項目教程,只是以此為主題的課題報告。其中包括了一個較為完整的 PyQt 項目。

歡迎關注『Python 小白的項目實戰 @ youcans』 原創作品
Python 小白的課題報告—OpenCV 摳圖項目實戰(1)目錄摘要
Python 小白的課題報告—OpenCV 摳圖項目實戰(2)摳圖緒論
Python 小白的課題報告—OpenCV 摳圖項目實戰(3)摳圖綜述
Python 小白的課題報告—OpenCV 摳圖項目實戰(4)固定閾值摳圖
Python 小白的課題報告—OpenCV 摳圖項目實戰(5)自適應閾值摳圖
Python 小白的課題報告—OpenCV 摳圖項目實戰(6)色彩范圍摳圖
Python 小白的課題報告—OpenCV 摳圖項目實戰(7)邊緣檢測
Python 小白的課題報告—OpenCV 摳圖項目實戰(8)圖像輪廓
Python 小白的課題報告—OpenCV 摳圖項目實戰(9)評價指標
Python 小白的課題報告—OpenCV 摳圖項目實戰(10)PyQt5 使用
Python 小白的課題報告—OpenCV 摳圖項目實戰(11)算法實驗平臺
Python 小白的課題報告—OpenCV 摳圖項目實戰(12)源程序代碼

第六章 基于 PyQt5 的摳圖算法實驗平臺


6.1 PyQt5 圖形界面開發工具

Qt 庫是跨平臺的 C++ 庫的集合,是最強大的 GUI 庫之一,可以實現高級 API 來訪問桌面和移動系統的各種服務。
PyQt5 是一套 Python 綁定 Digia QT5 應用的框架。PyQt5 實現了一個 Python模塊集,有 620 個類,6000 個函數和方法。
PyQt5 的優點是簡單好用,功能強大, 跨平臺支持,文檔齊全,穩定性高,生態支持,開源免費,非常適合圖形界面軟件的設計與開發。


6.1.1 PyQt5 與 QtTools的安裝與環境配置

1. 安裝 PyQt5:
通過 pip 安裝PyQt5,安裝 PyQt5 后就可以用 Python 編寫 Qt 程序。

pip install pyqt5 -i https://mirrors.aliuyun.com/pypi/simple

安裝了 PyQt5 就可以用 Python 語言編寫 Qt 程序。

2. 安裝 QtTools:
QtDesigner 通過人機交互的排版方式進行界面設計,非常方便、直觀。
QtTools 包含了兩個重要的工具:

  • 圖形界面設計工具 Qt Designer,用于設計圖形界面,生成 .ui文件,以 xml 格式存儲界面和控件的屬性;
  • UI 文件轉換工具 PyUic,用于將 .ui 文件解析為 .py 文件的工具。

Qt Tools 工具可以直接使用 pip 方式安裝:

pip install pyqt5-tools -i https://mirrors.aliuyun.com/pypi/simple

3.QtDesigner 和PyUIC 的環境配置 :
使用 PyCharm 集成開發工具,在安裝 QtTools 庫以后,還要對 QtDesigner 和 PyUIC 進行環境配置,將其集成到 PyCharm 中。

(1)添加 QtDesigner 工具:
運行 PyCharm;從菜單欄選擇:File -> Settings,彈出 Seetings 窗口;從左側菜單欄中選擇:Tools -> ExternalTools-> CreateTool 窗口。在 CreateTool 窗口依次填寫:

  • Name:填寫 “QtDesigner”
  • Program:填寫 designer.exe 的路徑,例如:
    C:\Python\ \qt5_applications\Qt\bin \designer.exe
  • Arguments:不用填寫
  • Working directory:填寫生成 UI 文件的保存路徑
    填好 CreateTool 窗口后,點擊 “OK” 即可完成 QtDesigner 工具的添加。

(2)添加 PyUIC 工具:
運行 PyCharm;從菜單欄選擇:File -> Settings,彈出 Settings 窗口;從左側菜單欄中選擇:Tools -> ExternalTools-> PyUIC 窗口。在 PyUIC 窗口依次填寫:

  • Name:填寫 “PyUIC”
  • Program:填寫 python.exe 的路徑,例如:C:\Python\Anaconda3\python.exe
  • Arguments:填寫"-m PyQt5.uic.pyuic FileNameFileNameFileName -o FileNameWithoutExtensionFileName Without ExtensionFileNameWithoutExtension.py"
  • Working directory:填寫將 .ui 文件轉換為 .py 文件的保存路徑。
    填好 PyUIC 窗口后,點擊 “OK” 完成 PyUIC 工具的添加。

6.1.2 QtDesigner的使用

使用 QtDesigner 開發 PyQt5 圖形界面的基本步驟是:
(1)使用圖形界面設計工具 QtDesigner 進行界面設計,生成 .ui 文件;
(2)使用 UI 轉換工具 PyUIC 將 .ui 文件轉換為 .py 文件;
(3)編寫一個 Python 應用程序調用 .py 界面文件,就可以實現 Python 平臺的 GUI 編程。

使用 QtDesigner 進行圖形界面設計的基本步驟是:
(1)運行 PyCharm,打開建立的 Python Project。
(2)從頂部菜單欄選擇 QtDesigner,彈出 QtDesigner 運行窗口。
(3)新建窗體:在 “新建窗體” 窗口的左側菜單選擇 “MainWindow” 新建一個圖形窗口。
(4)設計圖形界面。

QtDesigner 主界面分左中右三部分,左側是各種備選的控件對象,右側上方的 “對象查看器” 顯示控件的樹狀結構,右側下方的 “屬性編輯器” 顯示控件的各種屬性,中間部分用于顯示所設計的界面。
接下來可以按照界面設計方案,為新建的圖形窗口添加和設置圖形控件。

(5)將設計的圖形界面保存為 .ui文件,例如保存為 uiDemo.ui。

圖6.1 QtDesigner 圖形設計界面

圖6.2 PyUIC 文件轉換工具


6.1.3 信號與槽的連接

信號與槽機制(Signals and slots)是 PyQt 的核心機制,用于對象之間的通信,也就是實現函數之間的自動調用。

1. 信號與槽的原理
將信號與槽函數連接后,當信號被觸發時,槽函數將被自動調用。

  • 信號:信號可以是一個動作,也可以是對象的一種狀態,用于觸發所連接的槽。
  • 槽:槽就是一個函數,可以由連接的信號觸發。
  • 發射信號:信號被發射時,自動調用信號連接的槽函數,通常在對象狀態改變時發射信號。

一個信號可以連接多個槽函數,多個信號也可以連接到一個槽函數,一個信號可以連接到另一個信號上。
很多窗口部件(控件)內置了動作信號和槽函數可以直接調用,也可以按需求自定義信號和槽函數。
信號的發送者通常是一個控件對象,在控件對象的狀態發生變化時發送信號。常見的發送者是圖形窗口中的各種控件對象,但也可以是動作對象。

槽的接收者可以是控件對象,控件對象內置槽函數,也可以是自定義的槽函數。一般地,槽函數也有一個對象作為主體,即對于接受者這個控件對象執行函數定義的操作。例如槽函數執行的功能是關閉,關閉對象就是接受者。

根據信號的發送者與接收者,槽函數的,可以將信號與槽的連接分為以下幾種情況:
(1)不同的發送者與接收者,槽函數為控件的內置函數的操作方法;
(2)不同的發送者與接收者,槽函數為自定義函數;
(3)相同的發送者與接收者,槽函數為控件的內置函數;
(4)發送者是動作對象。

2. QtDesigner 建立信號與槽的連接
QtDesigner 設置信號/槽的連接的操作,可以選擇菜單進入信號/槽編輯模式,通過鼠標分別選擇信號與槽的控件對象,建立一個以控件對象1為發送者、控件對象2為接收者的信號/槽連接,再配置該信號與槽的連接。這種方法適合使用控件內置的方法作為槽函數,可以直接調用,不需要對函數進行定義。

程序核心功能通常是程序員根據需求編寫的自定義函數,QtDesigner 對這種情況提供了便捷和直觀的信號/槽編輯方法。

圖6.3 建立信號與控件內置槽函數的連接


圖6.4 建立信號與自定義槽函數的連接
?
(1)首先要在 QtDesigner 將自定義函數添加到槽函數配置連接表中。

在 QtDesigner 右側上方的 “對象查看器”,選中 MainWindow 或其它頂層對象,單擊鼠標右鍵喚出下拉菜單,選擇 “改變信號/槽”;
彈出 “MainWindow 的信號/槽” 對話框,對話框的上方顯示槽的選項,下方顯示信號選項。
點擊對話框上方 “槽” 選項框下部的綠色 “+”,系統在 “槽” 選項表的最后自動增加了一行 “slot1()”。這就是新增的自定義槽函數。
點擊選中 “slot1()”,再鼠標雙擊,就可以修改槽函數的函數名,例如修改為 click_pushButton_2()。
再點擊對話框上方 “槽” 選項框下部的綠色 “+”,可以繼續逐一添加自定義的槽函數

(2)然后設置信號/槽的連接:

選中控件對象發送者,長按鼠標左鍵并移動,當鼠標移出控件對象區域后,出現一條帶箭頭的紅線和一個紅色的接地符號。
松開鼠標左鍵,就建立了以控件對象 “pushButton_2” 為發送者、控件對象 “MainWindow” 為接收者的信號/槽連接。

(3)最后配置信號/槽的連接:

對話框 "配置連接 - QtDesigner"的左側顯示發送者控件 “pushButton_2” 的信號選項,右側顯示接收者 “MainWindow” 的控件選項。
根據功能要求,觸發信號為按鈕 “pushButton_2” 被點擊,從對話框左側選中 “clicked()”;
對話框右側接收者 “MainWindow” 的控件選項列表中,顯示了剛才添加的幾個自定義函數,選擇 “click_pushButton_2()”;
點擊對話框下方的按鈕 “OK”,完成該信號/槽連接的配置。


6.1.4 PyQt5 的控件、布局與窗口切換

1. 控件
控件是 Qt用戶界面上最基本的組件類型,也是構成用戶界面的基本結構。
用戶界面上顯示的所有內容都是控件,例如按鈕、標簽、文本框,又如菜單欄、工具欄、狀態欄,甚至整個窗口本身也是控件。

控件總體上可以分類如下:

  • 輸入控件:按鈕,鍵盤輸入控件,調節輸入控件,數字調節框控件,滑動輸入控件,下拉輸入控件,對話框輸入控件,日歷控件等;
  • 顯示控件:內容顯示控件,對話框顯示控件等;
  • 高級控件:容器控件,結構控件,滾動控件,輔助控件,其它控件等。

在 QtDesigner 左側的 “WidgetBox” 工具欄中,將常用的控件按類別進行分組。用鼠標將工具欄中的控件圖標拖拽到 QtDesigner 中間的圖形界面編輯窗口,就在圖像界面創建了一個所選擇的控件。

控件具有屬性。控件的相同屬性包括:名字,形狀,位置,大小,設置格式。控件的專用屬性包括:展示內容,接受輸入,用戶交互,日期,框架,等等。

QtDesigner 右側上方的 “對象查看器” 顯示了界面中的控件名稱和結構,下方的 “屬性編輯器” 顯示了選中的控件對象的各種屬性。在圖形界面中選擇某個控件,或者在 “對象查看器” 中選擇某個控件,在"屬性編輯器" 就會顯示該控件對象的屬性,也可以根據需要對控件的屬性進行編輯修改。


2. 布局管理
布局管理就是管理圖形窗口中各個部件的位置和排列。
網站、報紙要對發布的文章設置欄目、布局管理,使頁面整齊有序、美觀大方。圖形窗口中的大量部件也需要通過布局管理,對部件進行整理分組、排列定位,才能使界面友好。

圖形窗口中部件的位置有兩種模式來管理:絕對定位和布局類。
絕對定位就是指定部件相當于窗口的位置坐標 (X,Y) 和部件的高度、寬度。我們在此前文章中的例程,都是直接設置控件的位置和大小來管理的。
布局類則是使用各種布局方案進行布局管理。

PyQt5 提供了四種基本的布局管理器:水平布局、垂直布局、柵格布局和表單布局。

  • 水平布局(Horizontal Layout)將多個控件在水平方向排列,控件之間的間隔相同。
  • 垂直布局(Vertical Layout)將多個控件在垂直方向排列,控件之間的間隔相同。
  • 柵格布局(Grid Layout)也稱網格布局,布局框按照行和列進行排列,將控件排列到指定的網格位置。
  • 表格布局(Form Layout)以兩列的形式進行布局,多用于表單,一列為標簽,另一列為輸入控件。
    PyQt5 還提供了多種高級的的布局管理器:
  • 嵌套布局是指在一個布局內嵌套其它布局,可以實現在一個窗口中綜合應用多種布局。
  • 容器布局將容器控件(Container)與布局管理器結合,先用容器控件將窗口分為若干區域,再在每個區域內加入布局管理器。
    ?

圖6.5 程序窗口的分割和布局管理

圖6.6 堆疊布局實現的多窗口切換
?
容器布局就像網站、報刊中的欄目、子版,可以按照編輯的要求便捷、自由地進行布局。例如,我們要將程序窗口按照十字分割方案分為上下和左右四個部分,就在窗口先創建四個 “Frame” 容器控件,并調整其位置和大小,然后向一個或幾個 “Frame” 容器控件加入所需的布局管理控件。如下圖所示,可以實現對程序窗口的自由分割和布局。


3. 窗口切換
在實際的軟件項目中,通常需要多種/多個不同的圖形界面,以適應不同的任務場景。

實現多窗口圖形界面的需求有幾種思路:
(1)使用彈出窗口。主窗口提供基本界面,通過彈出窗口實現子任務界面,子任務結束后關閉彈出窗口回到主窗口。這是一種可行的,也比較簡單的處理方案,很多應用程序中都設有彈出窗口。但是頻繁彈出和關閉窗口的用戶體驗不好,而且在窗口之間的切換不方便。
(2)重建圖形界面。當調用新的圖形界面時,關閉后刪除現有界面上的所有控件,再新建需要的各種控件。 這種方案雖然可行,但是編程復雜、浪費資源、容易出錯,難以適應多窗口相互切換的要求,因此很少使用。在 QtDesigner 中也不支持這種方案的操作。
(3)通過堆疊布局實現多窗口切換。堆疊布局是在窗口的整體或局部區域設置多組圖形界面,根據需要使用指定的圖形界面。這就好比戲劇或拍照中準備了多種背景幕布,需要什么場景,就展開所需的場景幕布,而把其它幕布收起來。

QStackedLayout 類提供了幾種多頁面切換堆疊布局的實現方法:
(1)選項卡控件(QTackedWidget)提供了選項卡對話框,外觀類似于瀏覽器頁面打開多個標簽頁。選項卡控件允許創建多個對話框頁面,每個頁面帶有自己的標簽。使用時點擊標簽行進行選擇,就打開對應的對話框頁面,不需要另外編程。
(2)堆疊窗口控件(QStackedWidget)提供了更加通用和靈活的多窗口、多頁面切換的解決方案。堆疊窗口控件可以添加在整個窗口或窗口中的任意區域,允許在堆疊窗口區域內設計多個頁面,在程序控制使用指定的窗口界面。
堆疊窗口控件需要在主程序中通過編程來控制顯示的圖形界面,相對于選項卡控件來說比較復雜,但因此也更加靈活。


【本節完】


版權聲明:
本節內容,主要來自:Image Matting 客觀評價指標、數據集及主觀評價(https://blog.csdn.net/Mao_Jonah/article/details/113646709)

歡迎關注『Python 小白的項目實戰 @ youcans』 原創作品

原創作品,轉載必須標注原文鏈接:https://blog.csdn.net/youcans/article/details/122296231

Copyright 2022 youcans, XUPT

Crated:2022-01-09


歡迎關注『Python 小白的項目實戰 @ youcans』 原創作品
Python 小白的課題報告—OpenCV 摳圖項目實戰(1)目錄摘要
Python 小白的課題報告—OpenCV 摳圖項目實戰(2)摳圖緒論
Python 小白的課題報告—OpenCV 摳圖項目實戰(3)摳圖綜述
Python 小白的課題報告—OpenCV 摳圖項目實戰(4)固定閾值摳圖
Python 小白的課題報告—OpenCV 摳圖項目實戰(5)自適應閾值摳圖
Python 小白的課題報告—OpenCV 摳圖項目實戰(6)色彩范圍摳圖
Python 小白的課題報告—OpenCV 摳圖項目實戰(7)邊緣檢測
Python 小白的課題報告—OpenCV 摳圖項目實戰(8)圖像輪廓
Python 小白的課題報告—OpenCV 摳圖項目實戰(9)評價指標
Python 小白的課題報告—OpenCV 摳圖項目實戰(10)PyQt5 使用
Python 小白的課題報告—OpenCV 摳圖項目實戰(11)算法實驗平臺
Python 小白的課題報告—OpenCV 摳圖項目實戰(12)源程序代碼

總結

以上是生活随笔為你收集整理的【课题报告】OpenCV 抠图项目实战(10)PyQt5 使用的全部內容,希望文章能夠幫你解決所遇到的問題。

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