基于PyQt5的桌面图像调试仿真平台开发(13)图像边缘显示

news2024/11/24 20:14:31

系列文章目录

基于PyQt5的桌面图像调试仿真平台开发(1)环境搭建

基于PyQt5的桌面图像调试仿真平台开发(2)UI设计和控件绑定

基于PyQt5的桌面图像调试仿真平台开发(3)黑电平处理

基于PyQt5的桌面图像调试仿真平台开发(4)白平衡处理

基于PyQt5的桌面图像调试仿真平台开发(5)亮度处理

基于PyQt5的桌面图像调试仿真平台开发(6)去马赛克

基于PyQt5的桌面图像调试仿真平台开发(7)伽马矫正

基于PyQt5的桌面图像调试仿真平台开发(8)锐化

基于PyQt5的桌面图像调试仿真平台开发(9)去噪

基于PyQt5的桌面图像调试仿真平台开发(10)色彩矩阵

基于PyQt5的桌面图像调试仿真平台开发(11)清晰度测试

基于PyQt5的桌面图像调试仿真平台开发(12)图像灰度显示

基于PyQt5的桌面图像调试仿真平台开发(13)图像边缘显示

基于PyQt5的桌面图像调试仿真平台开发(14)色彩增强

基于PyQt5的桌面图像调试仿真平台开发(15)图像融合

工程代码:https://gitee.com/xiaoshixiao00/py-ispp


目录

系列文章目录

前言

一、是什么?

二、开发步骤和演示

1.怎么实现

2.编写和测试


前言

图像边缘显示也就是图像边缘检测,常用于图像锐化等图像增强算法,图像锐化就是边缘检测后增强,其实是边缘检测的一种运用。


一、是什么?

        图像边缘检测是指通过计算图像中像素值变化的梯度或差异来识别出图像中物体的边缘。常用的边缘检测算法有Sobel算子、Prewitt算子、Laplacian算子、Canny算子等。这些算子通过对图像中像素的灰度值或颜色值进行差分运算,找出像素值变化较大的区域,从而得到图像中物体的边缘信息。边缘检测在图像处理与计算机视觉领域中有着广泛的应用,例如目标检测、图像分割、人脸识别等。

二、开发步骤和演示

1.怎么实现

        和前面锐化一样,直接调用opencv的梯度算子即可,

cv2.Sobel(image_rgb,cv2.CV_64F,0,1,ksize=5)
 
cv2.Laplacian(image_rgb,cv2.CV_64F)
 
cv2.Scharr(image_rgb,cv2.CV_64F,0,1)
 
cv2.Canny(image_rgb,100,200)

2.编写和测试

①,开发图像ui控件和绑定事件

参考基于PyQt5的桌面图像调试仿真平台开发(3)黑电平处理_上天肖的博客-CSDN博客

②,算法开发实现

和锐化不同的是,这里支持检测边缘,不需要原图像无边缘的信息,所以进行梯度检测后,直接将检测后的结果显示出来即可。

#图像Sobel检测
def proc_image_sobel_detect(image_rgb):
    print("proc_image_sobel_detect,")
    result = cv2.Sobel(image_rgb,cv2.CV_64F,0,1,ksize=5)
    #sobel处理后数据为浮点数,需要转为整数
    result = np.around(result)
    result = result.clip(0, 255).astype('uint8')
    #cv2.imshow("sobel",result)
    return result

#图像Laplacian
def proc_image_laplacian_detect(image_rgb):
    print("proc_image_laplacian_detect,")
    result = cv2.Laplacian(image_rgb,cv2.CV_64F)
    #需要转为整数
    result = np.around(result)
    result = result.clip(0, 255).astype('uint8')
    return result

#图像Scharr
def proc_image_scharr_detect(image_rgb):
    print("proc_image_scharr_detect,")
    result = cv2.Scharr(image_rgb,cv2.CV_64F,0,1)
    # 需要转为整数
    result = np.around(result)
    result = result.clip(0, 255).astype('uint8')
    print("result:", result.shape)
    return result

#图像Canny
def proc_image_canny_detect(image_rgb):
    print("proc_image_canny_detect,")
    result = cv2.Canny(image_rgb,100,200)
    # 需要转为整数
    result = np.around(result)
    result = result.clip(0, 255).astype('uint8')
    #cv2.imshow("canny", result)
    print("result:",result.shape)
    #需要从灰度图转为全彩
    result = cv2.cvtColor(result, cv2.COLOR_GRAY2RGB)
    print("result:", result.shape)
    return result

③,演示

导入原图像

 点击图像边缘,选择算子,再点击确定,即可在右边显示梯度算子处理后的图像。

 下面是四种梯度算子处理后的图像差异,不同算法的差异还和梯度算子参数有关。

 


 总结

图像边缘检测原理就是求图像梯度,梯度检测原理就是离散函数求导。

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

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

相关文章

JavaWeb学习笔记1

目录 web标准 三个组成部分 HTML 标题标签 水平线标签 换行标签 图片标签 布局标签: 超链接标签 属性: 视频标签: 音频标签: 段落标签: 文本加粗标签: 表格标签 表单标签 表单项 CSS Css引入方式…

1.6 OSI 七层参考模型

OSI 参考模型 OSI参考模型解释的通信过程OSI参考模型数据封装与通信过程物理层功能数据链路层功能网络层的功能传输层功能会话层功能表示层功能应用层功能 开放系统互连 (OSI)参考模型是由国际标准化组织 (ISO) 于1984年提出的分层网络体系结构模型目的是支持异构网络系统的互联…

数学建模--TOPSIS

代码 topsis.m Positivization.m inter2Max.m Mid2Max.m Min2Max.m

C++学习 函数

目录 函数 函数的定义 函数的调用 值传递 常见的样式 函数的声明 函数的分文件编写 1.创建后缀.h的头文件 2.创建后缀.cpp的源文件 3.头文件中写函数声明 4.源文件中写函数定义 5.函数调用 函数 作用: C中的函数充当了组织和重用代码的重要工具,提供了抽…

8-js高级-3

JavaScript 进阶 - 3 了解构造函数原型对象的语法特征,掌握 JavaScript 中面向对象编程的实现方式,基于面向对象编程思想实现 DOM 操作的封装。 编程思想构造函数原型综合案例 编程思想 学习 JavaScript 中基于原型的面向对象编程序的语法实现&#xff…

大胜归来!妙记多这份「高考填志愿」指南请收好!

2023年高考已经落下帷幕,上周和本周多个省份就要公布高考分数了,志愿填报还会远吗? 不知道自己的分数能报什么院校? 不知道目标院校的王牌专业有哪些? 不知道目标专业的就业方向? 不知道有哪些志愿填报小…

C# 简述.NET中堆和栈的区别

目录 一,引言 二,.NET的堆栈 三,.NET中的托管堆 四,.NET中的非托管堆 五、堆栈、托管堆和非托管堆的比较 六,总结 一,引言 .NET提供了垃圾回收机制,使程序员从内存管理中被解放出来。但这…

Unity 语法详解之查找游戏物体的方法(含查找隐藏物体)

为了更好的看懂,有一个非常基础的知识,如果不知道可以移步去了解一下哦 unity | gameobject和transform的区别和关联通俗解释_gameobject transform_菌菌巧乐兹的博客-CSDN博客 一、前情提要 大写的GameObject是个类,里面写满了物体有关的…

python利用docxtpl将excel数据写入word表格

解决问题一:将excel数据读取,并将其保存在word中的表格 解决问题二:使用xlrd读入excel数据,如果是整数的话,打开word后发现保存变成了浮点数,后边多了“.0”。 问题一、 可以参考docxtpl快速上手使用,数…

电商API知识点整理(二)关键字搜索接口item_search获取商品列表

关键字搜索接口名称:item_search 接口背景: 随着互联网的普及和电子商务市场的快速发展,越来越多的消费者开始通过关键字搜索来寻找自己感兴趣的商品。为了满足用户的需求,电商平台开发了各种搜索接口,其中之一就是i…

22个最佳WordPress网站预约插件(2023)

您是否正在寻找可以节省您和您的客户时间的自动预订或预约插件?您是否厌倦了将业务输给竞争对手?您是否正在寻找一种简化在线预约和预订的方法? 您的网站应该让客人可以轻松查看和预订可用的预约。这是WordPress预约插件可以帮助您实现在线业…

基于Python的DES算法的企业用户数据安全加密系统设计与实现

博主介绍:擅长Java、微信小程序、Python、Android等,专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟 Java项目精品实战案例…

【SLAM14讲】04 三维空间刚体运动

一、坐标系之间的欧式变换 xW , yW , zW定义的世界坐标系,xC , yC , zC 定义的相机坐标系。 相机视野中某个向量 p,它的坐标为pc,而从世界坐标系下看,它的坐标 pw。 二、相机运动 相机运动是一个刚体运动,它保证了同…

golang arena

go 1.20新特性 goland设置 Enviroment 定义环境变量 Go tool arguments 就是go build 的参数 Program arguments 启动参数 GOEXPERIMENTarenas -tags goexperiment.arenas //go:build goexperiment.arenaspackage mainimport ("arena""fmt""net/…

可以实现语音录入的好用的记事本app是哪个?

在现代快节奏的工作生活中,记事本成为了人们不可或缺的工具之一。然而,传统的手写记事本已经无法满足人们快速、高效的需求,语音记事的好处不言而喻。 它不仅能够提高工作效率,减少输入时间,还能够帮助用户更好地记录…

使用Visual Studio 2019 编译Masscan

目录 使用Visual Studio 2019 编译Masscan 1.从github下载源码 2.安装Visual Stiudio 2019 3.准备编译Masscan 4.编译Masscan 总结 使用Visual Studio 2019 编译Masscan 1.从github下载源码 可以直接在GitHub上搜索,下载后的源码目录结构。 2.安装Visual Stiu…

ds1:java-stream流

文章目录 1.修改集合中的值map2.过滤集合中符合条件的值filter找集合中的最大/小的值,及操作后元素的个数max()/min()/count()归约:对集合中所有元素进行自定义计算获取最终值reduce()collect分组(partitioningBy/groupingBy)修改集合中元素之间的连接符…

ctr-k8s镜像管理命令,将k8s正在使用的镜像推送仓库

​ k8s镜像管理命令 查出k8s中pod在使用的镜像 kubectl get -o wide deploy -n yxyw-uat |awk ‘{print $7}’ 查出镜像地址,勾选正则开头配上镜像推送命令 gem-acr-p-a01-registry-vpc.cn-shenzhen.cr.aliyuncs.com/osale/gyx-admin:yxyw-pre-2023-06-05-11-18…

便携式多功能校准器TD1858参考标准

体积小巧:相较于同档次技术指标的多功能校准器,体积缩小至50%,重量轻便:整机质量不到10 kg,人员可轻松实现搬运,方案价值:非常方便携带至工作现场对数字多用表和其他电测仪表进行校准。 直流电压…

搭建cesium源码调试环境

1. cesium源码下载 直接从github上下载即可 https://github.com/CesiumGS/cesium.git 本文下载的是最新版本1.106 2. cesium源码目录简介 1) packages目录 源码目录,包含engine,widgets 2)Apps目录 包含一些示例代码 3)Spec…