【课题总结】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 抠图算法实验平台软件使用说明

抠图算法实验平台使用简明和统一图形界面,使用非常简单。

  1. 系统功能:
    通过菜单栏或工具栏的选择,可以实现:打开文件、关闭文件、保存文件、参数设置、帮助和关闭等系统功能。
  2. 抠图算法的选择和运行:
    通过左侧算法选择区域的按钮可以选择不同的算法,对导入的图像进行抠图或图像分割的处理。
    如果没有导入图像,将弹出消息框提示:“请读入抠图图像”。
    原始图像和抠图/图像分割算法的输出图像,将显示在窗口上方;算法运行中产生的过程图像,将显示在窗口下方的小图区域。
  3. 图像的放大浏览
    点击小图下方的“浏览”按钮,将在窗口右上方放大显示该图像。
  4. 算法参数的设置
    (待开发)
    如图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)源程序代码


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/565863.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【OpenCV 例程200篇】67. 空间域图像增强的综合应用

【OpenCV 例程200篇】67. 空间域图像增强的综合应用 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 5. 空间域图像增强技术的综合应用 空间域图像增强的方法很多,各有不同的特点和…

Vue 双向绑定小案例

用Vue实现双向绑定的小案例。 **双向绑定:**使用了双向绑定的两个内容一定是完全一样,同时变化(同增同减) 效果图 原始样式 删除输入框内容上面显示的文本内容随之减少 在下面输入框输入内容上面显示的内容也会增加 **注意&…

【OpenCV 例程200篇】68. 连续周期信号的傅立叶级数

【OpenCV 例程200篇】68. 连续周期信号的傅立叶级数 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 1. 频率域图像滤波 图像滤波是在尽可能保留图像细节特征的条件下对目标图像的噪声进行抑制…

Vue 跑马灯

Vue 实现跑马灯的效果。 效果图 **功能讲解&#xff1a;**当点击开始按钮&#xff0c;跑马灯效果开始进行&#xff0c;文字滚动消失和显示&#xff0c;循环滚动&#xff0c;点击停止按钮&#xff0c;文字不再滚动&#xff0c;停留在当时显示的文字页面。 代码演示 <!DOC…

【OpenCV 例程200篇】69. 连续非周期信号的傅立叶系数

【OpenCV 例程200篇】69. 连续非周期信号的傅立叶系数 欢迎关注 『OpenCV 例程200篇』 系列&#xff0c;持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列&#xff0c;持续更新中 傅里叶变换 滤波通常是指对图像中特定频率的分量进行过滤或抑制。图像滤波是在尽可能保留…

Python3.x字符串替换方法replace()、maketrans()和translate()

Python中replace()函数,类似于“查找与替换”功能 语法格式如下&#xff1a; str.replace(old, new[, max]) 其方法把字符串中的 old&#xff08;旧字符串&#xff09;&#xff0c;替换成 new(新字符串)&#xff0c;如果指定第三个参数max&#xff0c;则替换不超过 max 次&…

Vue 金额计算

使用Vue计算商品金额。 **功能分析&#xff1a;**输入商品单价和商品数量&#xff0c;设置固定的运费价格&#xff0c;直接会显示商品总价格。 效果演示 原始样式&#xff08;我设置的运费是10&#xff09; 输入商品单价和价格 代码演示 **注意&#xff1a;**引入Vue.js…

【OpenCV 例程200篇】70. 一维连续函数的傅里叶变换

【OpenCV 例程200篇】70. 一维连续函数的傅里叶变换 欢迎关注 『OpenCV 例程200篇』 系列&#xff0c;持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列&#xff0c;持续更新中 2.1 傅里叶级数 傅里叶级数&#xff08;Fourier series&#xff09;在数论、组合数学、信号…

新版CSDN中如何快速转载别人的CSDN博客,详细方法与步骤!!!

前言 作为DSCN博客用户小萌新&#xff0c;有可能自己写的博客还不够好&#xff0c;或者当看到别人写的特别好的博客时&#xff0c;就想转载&#xff08;有些人可能会问&#xff1a;不是可以收藏吗&#xff1f;当然可以收藏&#xff0c;但是有些人也会想转载下载&#xff0c;不…

Vue 筛选

对数据进行筛选功能。 **功能分析&#xff1a;**当你输入一串文字时&#xff0c;以最快的速度筛选出相对应的内容&#xff0c;如果没有对应的内容则不予显示。 效果演示 原始样式 在输入框输入平板时筛选相应的内容 代码演示 **注意&#xff1a;**引入Vue.js架包 <!…

【OpenCV 例程200篇】71. 连续函数的取样

【OpenCV 例程200篇】71. 连续函数的取样 欢迎关注 『OpenCV 例程200篇』 系列&#xff0c;持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列&#xff0c;持续更新中 1.2 连续函数的取样 连续函数必须经过取样和量化转换为离散函数&#xff0c;才能用计算机进行处理。 …

第一个鸿蒙程序“hello world“

开发者文档: 开发者文档 运行环境要求 下载和安装DevEco Studio下载和安装Node.js 开始hello world 1.打开DevEco Studio&#xff0c;在欢迎页点击Create HarmonyOS Project&#xff0c;创建一个新工程。 2.选择设备类型和模板&#xff0c;以Wearable为例&#xff0c;选择Empty…

Vue 选项卡效果

用Vue实现选项卡效果。 效果演示 点击CSS 点击Vue 看起来是不是有点菜单导航的感觉&#xff0c;下面跟随我一起来一探究竟&#xff1f; 代码演示 **注意&#xff1a;**引入Vue.js架包 <!DOCTYPE html><html><head><meta charset"utf-8" /&…

【OpenCV 例程200篇】72. 一维离散傅里叶变换

【OpenCV 例程200篇】72. 一维离散傅里叶变换 欢迎关注 『OpenCV 例程200篇』 系列&#xff0c;持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列&#xff0c;持续更新中 1.3 一维离散傅里叶变换 数字信号和数字图像都是采样得到的离散变量。 对原函数的变换取样后的数…

鸿蒙系统中的 JS 开发框架

今天鸿蒙终于发布了&#xff0c;开发者们也终于“沸腾”了。 源码托管在国内知名开源平台码云上&#xff0c;https://gitee.com/openharmony 我也第一时间下载了源码&#xff0c;研究了一个晚上&#xff0c;顺带写了一个 hello world 程序&#xff0c;还顺手给鸿蒙文档提了 2 个…

【OpenCV 例程200篇】73. 二维连续傅里叶变换

【OpenCV 例程200篇】73. 二维连续傅里叶变换 欢迎关注 『OpenCV 例程200篇』 系列&#xff0c;持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列&#xff0c;持续更新中 2.1 二维连续傅里叶变换 设 f(t,z)f(t,z)f(t,z) 是二维连续变量 t,zt, zt,z 的连续函数&#xff…

Vue 购物车案例

用Vue实现购物车。 程序详解&#xff1a; 页面要显示商品的基本信息&#xff08;编号&#xff0c;名称&#xff0c;单价&#xff0c;购买数量&#xff0c;总价等&#xff09; 1.增加和减少商品数量 2.商品金额会随数量变化 3.会自动计算总金额 4.对某一类商品进行移除操作 5.还…

Python入门基础篇(一)列表,详细实用,简单易懂!!!!

请仔细阅读哦&#xff01;&#xff01;&#xff01; 文章目录前言一、Python列表的创建与删除1.赋值运算符直接创建列表2.创建空列表3.创建数值列表4.删除列表二、访问列表中的元素三、遍历列表中的元素1.直接使用for循环实现2.使用for循环和enumerate()函数实现四、列表元素的…

【OpenCV 例程200篇】74. 图像的抗混叠

【OpenCV 例程200篇】74. 图像的抗混叠 欢迎关注 『OpenCV 例程200篇』 系列&#xff0c;持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列&#xff0c;持续更新中 2.2 图像的混叠和重取样 由于无法对一个函数无限地取样&#xff0c;因此在数字图像中总是会出现混叠。 …

图片滚动显示

用H5实现图片滚动显示像跑马灯一样的效果。 程序详解&#xff1a; 图片滚动的开始和停止 鼠标的放上和移走事件 无限循环 每次滚动速度的快慢 效果演示&#xff08;图片自右向左滚动&#xff09; 代码演示 <!DOCTYPE html> <html><head><meta charset&…