【课题总结】OpenCV 抠图项目实战(12)源程序代码
Python 小白的課題報告—OpenCV 摳圖項目實戰(12)源程序代碼
本系列是 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.2.3 摳圖算法實驗平臺的主程序設計
編寫一個 Python 應用程序調用PyUIC轉換得到的.py文件,就可以實現 Python的 GUI 編程。
Python 應用程序的基本結構為:
(1)程序說明
(2)導入工具包和UI界面
(3)MainWindow 類的初始化
(4)自定義槽函數
(5)main函數
Python 應用程序框架的核心代碼如下:
# GUI_Matting_v4.py # Matting GUI by PyQt5 # Copyright 2021 youcans, XUPT # Crated:2021-12-10 # 版本說明: # v1: 基于 PyQt5 建立 GUI 框架 # v2: (1) 讀取圖片功能 # (2) GUI 圖像顯示函數 # (3) 選擇圖片放大 # v3: (1) 實現固定閾值摳圖功能 # (2) 實現自適應閾值摳圖功能 # (3) 實現HSV顏色范圍摳圖功能 # v4: (1) 實現邊緣檢測功能 # (2) 實現輪廓查找功能 # (3) 實現圖像分割功能import cv2 … from PyQt5 import QtCore, QtGui, QtWidgets from uiMatting3 import Ui_MainWindow # 導入設計的 ui界面類class MyFigure(FigureCanvas): # 窗口部件,繼承FigureCanvas基類# 繼承 QMainWindow 類和 Ui_MainWindow 界面類 class MyMainWindow(QMainWindow, Ui_MainWindow):# 初始化模塊def __init__(self, parent=None):super(MyMainWindow, self).__init__(parent) # 初始化父類self.setupUi(self) # 繼承 Ui_MainWindow 界面類## --- GUI 定義動作 ---# 建立信號與槽的連接self.pushButton_p11.clicked.connect(self.click_pushButton_p11)self.pushButton_p12.clicked.connect(self.click_pushButton_p12)self.pushButton_p13.clicked.connect(self.click_pushButton_p13)self.pushButton_p14.clicked.connect(self.click_pushButton_p14)# 核心算法模塊def click_pushButton_1(self): # 固定閾值摳圖,點擊 pushButton_01 觸發def click_pushButton_2(self): # 自適應閾值摳圖,點擊 pushButton_02 觸發def click_pushButton_3(self): # 顏色范圍摳圖,點擊 pushButton_03 觸發def click_pushButton_4(self): # 邊緣檢測,點擊 pushButton_04 觸發def click_pushButton_5(self): # 輪廓查找,點擊 pushButton_05 觸發def click_pushButton_6(self): # 圖像分割,點擊 pushButton_06 觸發# 堆疊布局頁面控件動作模塊def click_pushButton_p11(self): # 子圖放大,點擊 pushButton_p11 觸發def click_pushButton_p12(self): # 子圖放大,點擊 pushButton_p12 觸發def click_pushButton_p13(self): # 子圖放大,點擊 pushButton_p13 觸發def click_pushButton_p14(self): # 子圖放大,點擊 pushButton_p14 觸發# 系統功能模塊def trigger_actHelp(self): # 動作 actHelp 觸發def trigger_actOpen(self): # 動作 actOpen 觸發def trigger_actSave(self): # 動作 actSave 觸發# 主程序模塊 if __name__ == '__main__':app = QApplication(sys.argv) # 在 QApplication 方法中使用,創建應用程序對象myWin = MyMainWindow() # 實例化 MyMainWindow 類,創建主窗口myWin.show() # 在桌面顯示控件 myWinsys.exit(app.exec_()) # 結束進程,退出程序6.3 摳圖算法實驗平臺軟件使用說明
摳圖算法實驗平臺使用簡明和統一圖形界面,使用非常簡單。
通過菜單欄或工具欄的選擇,可以實現:打開文件、關閉文件、保存文件、參數設置、幫助和關閉等系統功能。
通過左側算法選擇區域的按鈕可以選擇不同的算法,對導入的圖像進行摳圖或圖像分割的處理。
如果沒有導入圖像,將彈出消息框提示:“請讀入摳圖圖像”。
原始圖像和摳圖/圖像分割算法的輸出圖像,將顯示在窗口上方;算法運行中產生的過程圖像,將顯示在窗口下方的小圖區域。
點擊小圖下方的“瀏覽”按鈕,將在窗口右上方放大顯示該圖像。
(待開發)
如圖14 ~圖16所示,展示典型的摳圖算法運行結果。
圖6.14:綠屏背景摳圖算法運行結果
圖6.15 自然背景摳圖算法運行結果
圖6.16 自然背景摳圖算法運行結果
結束語
本文圍繞摳圖技術展開學習討論,將圖像分離為前景與背景,分別使用了固定閾值摳圖、自適應閾值摳圖算法程序與HSV空間色彩區間摳圖算法對不同顏色背景的圖片進行摳圖。并編寫了邊緣檢測、輪廓查找和圖像分割的程序,以支撐復雜的摳圖方法。最后基于 PyQt5 開發了一個摳圖算法實驗平臺軟件。
致 謝
本論文的完成是在***老師的指導下完成的,我要向他們的細心指導表示由衷的感謝。在這段時間,我從他們身上不僅學到了許多專業知識,也感受到他們對于工作的敬業與熱愛。
感謝同學的幫助,擴充了我的知識面,使我學習了但不局限于摳圖的技術與知識,在相互的學習探討中受益匪淺。
參考文獻
[1] Porter T,Duff T.Compositing digital images [C].Computer Graphics Proceedings,Annual Conference Series,ACM SIGGRAPH,New York,1984 :253-259
[2] 林生佑,潘瑞芳,杜輝等.數字摳圖技術綜述[J].計算機輔助設計與圖形學學報,2007,19(4):473-478
[3] 梁椅輝,黃翰,蔡邵權等.自然圖像摳圖技術綜述[J].計算機應用研究,2021,38(5): 1294-1301
[4] 孫巍.視覺感知特性指導下的自然圖像摳圖算法研究[D].北京:北京交通大學,2015
[5] Gonzalez R C,Woods R E著,阮秋琦,阮宇智譯.數字圖像處理(第四版)[M].電子工業出版社,2020
[6] 沈洋,林曉,謝志峰等.交互式前景摳圖技術綜述 [J].計算機輔助設計與圖形學學報,2014,26(4):511-519
[7] 姚桂林,姚鴻勛.基于仿射方法的圖像摳圖算法綜述 [J].計算機輔助設計與圖形學學報,2016,28(4):677-692
[8] 李卓婷.三種典型數字圖像算法的比較[D].廣州:華南理工大學,2013
[9] 文向東.基于高分辨率大尺寸圖像摳圖方法的研究綜述 [J].現代計算機,2021(5):75-80
[10] Berman A,Dardourian A,Vlahos P.Method for removing from an image the background surrounding a selected object: US 6134346 [P] .2000
[11] Ruzon M,Tomasi C.Alpha estimation in natural images [C].Proceedings of IEEE Conf. on Computer Vision and Pattern Recognition,South Carolina,2000:18-25
[12] Hillman P,Hannah J,Renshaw D.Alpha channel estimation in high resolution images and image sequences [C].Proceedings of IEEE Conf. on Computer Vision and Pattern Recognition,Hawaii,2001:1063-1068
[13] Chuang Y Y.New models and methods format ting and compositing [D].Seattle: University of Washington,2004
[14] Sun J,Jia J Y,Tang C K.Poisson matting [C].Computer Graphics Proceedings,Annual Conference Series,ACM SIGGRAPH,Los Angeles,2004 :315-321
[15] Rother C,Kolmogorov V,Blake A.Interactive foreground extraction using iterated graph cuts [C].Computer Graphics Proc.,Annual Conference Series,ACM SIGGRAPH,Los Angeles,2004 :309-314
[16] OpenCV User Guide -v4.5.4.https://docs.opencv.org/4.x/
[17] 從零開始PyQt5項目實戰.https://blog.csdn.net/youcans/article/details/120640342
[18] 從零開始OpenCV 學習課.https://blog.csdn.net/youcans/article/details/120995650
附錄:完整程序代碼
小白總是希望博主提供完整程序代碼的,相關代碼將上傳至 GitHub:
https://github.com/youcans/OpenCV-Python.git
也可以在評論區留下郵箱地址,索取程序代碼。
【本系列全文完】
版權聲明:
歡迎關注『Python 小白的項目實戰 @ youcans』 原創作品
原創作品,轉載必須標注原文鏈接:https://blog.csdn.net/youcans/article/details/122450019
Copyright 2022 youcans, XUPT
Crated:2022-01-11
歡迎關注『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 抠图项目实战(12)源程序代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安装rtx时报错因计算机中丢失lo,po
- 下一篇: 教师网络计算机研修日志,教师网络研修日志