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

系列文章目录

基于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.hqwc.cn/news/27454.html

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

相关文章

ES系列--es初探

一、前言 一般传统数据库,全文检索都实现的很鸡肋,因为一般也没人用数据库存文本字段。进 行全文检索需要扫描整个表,如果数据量大的话即使对 SQL 的语法优化,也收效甚微。建 立了索引,但是维护起来也很麻烦&#xff0…

深入学习 Redis - 常用数据类型,结构认识

目录 一、Redis数据类型 Redis 数据类型结构简单认识 每个数据类型具体的编码方式 1.string 2.hash 3.list 4.set 5.zset 典中典:记数字!!! 6.查看 key 对应 value 的实际编码方式 如果本文有帮助到你,不…

分布式应用之存储(Ceph)

分布式应用之存储(Ceph) 一、数据存储类型 存储类型说明典型代表块存储一对一,只能被一个主机挂载使用数据以块为单位进行存储硬盘文件存储一对多,能同时被多个主机挂载/传输使用,数据以文件的形式存储(元数据和实际…

python开发项目基于语音识别的智能垃圾分类系统的设计与实现

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

火焰图性能监测

准备工作——安装perf 我是在github的codespace上搞的,可以按下面的方式安装perf: sudo apt install linux-tools-generic sudo apt install linux-cloud-tools-azure参考在WSL2中使用perf性能剖析工具 测试程序——简单的C程序 弄一个无限循环的C程…

【网络安全带你练爬虫-100练】第13练:文件的创建、写入

目录 目标:将数据写入到文件中 网络安全O 目标:将数据写入到文件中 开干 (始于颜值)打开一个,没有就会创建 with open(data.csv, modew, newline) as file: (忠于才华)开始写入数据 writer cs…

Pytorch:搭建卷积神经网络完成MNIST分类任务:

2023.7.18 MNIST百科: MNIST数据集简介与使用_bwqiang的博客-CSDN博客 数据集官网:MNIST handwritten digit database, Yann LeCun, Corinna Cortes and Chris Burges MNIST数据集获取并转换成图片格式: 数据集将按以图片和文件夹名为标签的…

SpringBoot 整合 RabbitMQ demo

Rabbit Windows安装教程 本文只做Demo案例的分享,具体只是需自行百度 一、生产者 1.application.properties 配置Rabbit的基本信息 #rabbit 主机IP spring.rabbitmq.host127.0.0.1 #rabbit 端口 spring.rabbitmq.port5672 #rabbit 账号 可自行创建 这里是默认的 …

排序算法的补充

建议先去看看我之前写的基础排序算法 补充一&#xff1a;快排中partition函数的三种实现形式 1.hoare法---与第2种方法类似 int Partition1(int*a,int left,int right) {int keyi left;while (left < right) {while (left < right && a[right] > a[keyi])…

Hadoop 之 HDFS 伪集群模式配置与使用(二)

HDFS 配置与使用 一.HDFS配置二.HDFS Shell1.默认配置说明2.shell 命令 三.Java 读写 HDFS1.Java 工程配置2.测试 一.HDFS配置 ## 基于上一篇文章进入 HADOOP_HOME 目录 cd $HADOOP_HOME/etc/hadoop ## 修改文件权限 chown -R root:root /usr/local/hadoop/hadoop-3.3.6/* ## …

C++-string类的模拟实现

本博客基于C官方文档当中给出的string类当中的主要功能实现&#xff0c;来作为参照&#xff0c;简单模拟实现 My-string 。 对于C当中的string类的介绍&#xff0c;在之前的几篇博客当中有说明&#xff0c;如有问题&#xff0c;请参照一下两个博客文章进行参考&#xff1a; (2…

ERROR: Invalid requirement: ‘==‘ 解决python报错

ERROR: Invalid requirement: 错误:无效的要求: 今天安装 selenium包时突然触发这个报错&#xff0c;这个错误通常出现在使用pip安装Python包时&#xff0c;报错的原因是需要注意的是前后没有空格&#xff0c;若是加空格就会出现上述报错。 例如&#xff1a; 安装指定版本的…