OpenCV-Python图像梯度 Sobel算子

本文介绍了Sobel算子在图像处理中的应用,用于检测图像的边缘。通过与原始图像进行卷积,计算水平和垂直方向的像素值变化,从而得到图像的梯度信息。Sobel算子结合了高斯平滑和微分求导,能够有效地找出图像的边缘。通过cv2库在Python中实现Sobel算子,并展示处理前后的图像效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

图像的梯度计算的是图像变化的速度,对于边缘部分呢灰度值变换大,梯度值也大,相反则灰度值变化小,梯度值小

Sobel算子是一种离散的微分算子,该算子结合了高斯平滑处理和微分求导运算。 该算子利用局部差寻找边缘
在这里插入图片描述
将Sobel算子Gx和原始图像卷积可以得到水平方向的像素值变化,与Gy卷积的到垂直方向的像素值变化。
在这里插入图片描述
将sober算子在图中进行平移,当前位置的像素值等于sobel算子与(当前位置与周边位置8个点)进行对应位置相乘并相加操作,作为当前位置的像素点。
如果要计算P5的水平方向,则需要Sobel算子及P5邻域点

公式为:P5x轴 = P3 - P1 + 2 * P6 - 2* P4 + P9 - P7

用P5右侧的像素点减左侧的像素点,因为P4和P6离P5较近,所以权值为2,其他为1垂直方向类似,垂直是下减上。

import cv2
import matplotlib.pyplot as plt
import numpy as np
def cv_show(img,name):
    cv2.imshow(name,img)
    cv2.waitKey()
    cv2.destroyAllWindows()

def Sobel():
    img = cv2.imread('images/pie.png', cv2.IMREAD_GRAYSCALE)
    cv2.imshow("img", img)
    
    # 使用cv2.Sobel(src, cv2.CV_64F, 1, 0, ksize=3)  对x轴方向进行sobel算子相乘操作
    sobelx = cv2.Sobel(img, cv2.CV_64F, 1, 0, ksize=3)
    # 由于会出现负值的情况,因此使用cv2.convertScalerAbs() 转换为绝对值的形式
    sobelx = cv2.convertScaleAbs(sobelx)
    cv_show(sobelx, 'sobelx')
    
	# 计算y轴方向上的sobel算子
    sobely = cv2.Sobel(img, cv2.CV_64F, 0, 1, ksize=3)
    sobely = cv2.convertScaleAbs(sobely)
	cv_show(sobely, 'sobely')
	 
	# 使用cv2.addWeighted 将x轴方向的sobel算子的结果和y轴方向上的sobel算子的结果结合
    sobelxy = cv2.addWeighted(sobelx, 0.5, sobely, 0.5, 0)
    cv_show(sobelxy, 'sobelxy')

    

在这里插入图片描述

### 如何自定义或扩展 Huliuyu Form Generator 的功能 #### 自定义组件的创建 为了适应不同的业务需求,Huliuyu Form Generator 支持通过编写自定义组件来增强其功能。这通常涉及几个方面的工作: - **注册新组件**:首先需要在项目中引入新的Vue组件,并将其注册到全局环境中以便可以在任何地方使用[^1]。 ```javascript import Vue from 'vue'; import MyCustomComponent from './components/MyCustomComponent.vue'; Vue.component('my-custom-component', MyCustomComponent); ``` - **配置JSON模式支持**:为了让表单生成器识别并渲染这些自定义组件,在`schema.json`文件里添加相应的字段描述以及UI选项设置[^2]。 ```json { "type": "object", "properties": { "customField": { "title": "Custom Field", "type": "string", "ui:widget": "my-custom-widget" } } } ``` #### 扩展现有的表格组件 对于特定场景下的复杂数据展示需求,可以通过继承现有的表格类来进行针对性改进。比如增加分页、筛选等功能模块,或是调整列宽比例等样式属性。 - **重写默认行为**:如果标准版中的某些特性不符合实际应用场景,则可以考虑覆写父级方法以改变原有逻辑流程。 ```javascript export default class ExtendedTable extends BaseTable { constructor(options) { super(options); this._initPagination(); } _initPagination() { // Initialize pagination logic here... } } ``` - **集成第三方库**:当内置能力不足以支撑更高级别的交互体验时,不妨尝试接入外部插件如Element UI 或 Ant Design Vue 来补充缺失的部分。 ```html <template> <a-table :columns="columns" :data-source="dataSource"> <!-- Additional slots or scoped slot content --> </a-table> </template> <script> // Import and use ant design vue table component. </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值