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

news/2025/3/29 16:57:45/

系列文章目录

基于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.ppmy.cn/news/757933.html

相关文章

SIM卡APN选择说明

概述 移动、电信运营商SIM卡开卡时,所需APN及平台的选择说明。 运营商平台解释 电信、移动运营商对物联网设备存在不同的平台管理。电信物联网卡可连接平台有电信OC平台(AEP)、华为OC平台(IOT)。移动物联网卡可连接…

what is APN?

1.what is APN? APN是一种网络接入技术,是通过无线上网时必须配置的一个参数。它决定着用户通过何种方式接入哪个网络。在GPRS骨干网中,APN被用来标识要使用的外部PDN。 APN组成APN网络标识APN运营者标识 APN网络标识:是用户通…

android修改 apn_什么是APN,以及如何在Android手机上进行更改?

android修改 apn Android gives users a whole lot of customization options, some of which are useful for everyone, while others are just for power users. One of these lower level settings is the Access Point Name—better known as the APN. Android为用户提供了…

给大家科普一下什么是APN及配置方法

欢迎来到东用知识小课堂,今天东东来给大家简单科普一下APN以及它在路由器上面的配置方法APN(Access Point Name)指一种网络接入技术,它决定了手机通过哪种接入方式来进行拨号。在拨号上网时这些参数都是必须设置的,比如…

APN是什么?

一、APN概念 APN是Access Point Name的缩写,直译为访问点名称。在移动通信网络中,APN用于标识和定位移动设备所需要的数据网络。可以理解为一个唯一的标识符,通过该标识符,移动设备可以连接到相应的数据网络,从而实现…

什么是APN

APN(Access Point Name)指一种网络接入技术,是通过手机上网时必须配置的一个参数,它决定了手机通过哪种接入方式来访问网络。 对于手机用户来说,可以访问的外部网络类型有很多,例如:Internet、W…

有效应对5大挑战,助力超自动化成功实施

在各业务领域,自动化系统的广泛应用已经成为一种普遍现象。随着时间的推移,我们观察到一种自然趋势,那就是整合这些系统以提升生产效率。这种趋势被广泛称为“超自动化(Hyper-automation)”,这是一种更倾向…

HTML5 实现图片宽度自适应手机屏幕宽度的CSS

HTML5实现图片自适应手机屏幕页面的css。 HTML5写手机页面,读取图片,如果图片大于手机屏幕的宽度,就显示100%屏幕,如果小于,就显示原图。 CSS的max-width就能实现了,切不要设置img的宽和高。比如图片宽度…