sobel边缘检测代码
时间: 2024-01-12 08:03:38 浏览: 26
这里给出Python实现的Sobel边缘检测代码:
```python
import cv2
import numpy as np
# 读取图像
img = cv2.imread('lena.jpg', 0)
# 进行Sobel边缘检测
sobelx = cv2.Sobel(img, cv2.CV_64F, 1, 0, ksize=3)
sobely = cv2.Sobel(img, cv2.CV_64F, 0, 1, ksize=3)
# 计算梯度幅值和方向
grad = np.sqrt(sobelx ** 2 + sobely ** 2)
grad = np.uint8(grad)
theta = np.arctan2(sobely, sobelx) * 180 / np.pi
# 显示结果
cv2.imshow('original', img)
cv2.imshow('sobelx', sobelx)
cv2.imshow('sobely', sobely)
cv2.imshow('gradient', grad)
cv2.waitKey(0)
```
这个代码使用`cv2.Sobel()`函数进行Sobel边缘检测,同时计算梯度幅值和方向。最后使用opencv的imshow()函数显示结果图像。
相关问题
matlab实现sobel边缘检测代码
好的,以下是matlab实现sobel边缘检测代码:
原始图像:
```matlab
I = imread('img.jpg');
imshow(I);
```
Sobel边缘检测:
```matlab
I = rgb2gray(I); % 转换为灰度图像
sobel_x = [-1 0 1; -2 0 2; -1 0 1]; % x方向sobel算子
sobel_y = [-1 -2 -1; 0 0 0; 1 2 1]; % y方向sobel算子
Gx = imfilter(double(I), sobel_x, 'replicate');
Gy = imfilter(double(I), sobel_y, 'replicate');
G = sqrt(Gx.^2 + Gy.^2); % 边缘强度
G = uint8(G);
imshow(G);
```
笑话:为什么熊猫总是不想干活?因为它们每天都在“熊猫”网上浪费时间!
sobel边缘检测matlab代码
以下是Sobel边缘检测的MATLAB代码:
```
% 读取原始图像
I = imread('lena.jpg');
% 转换为灰度图像
I = rgb2gray(I);
% Sobel边缘检测
sobel_x = [-1 0 1; -2 0 2; -1 0 1]; % x方向
sobel_y = [-1 -2 -1; 0 0 0; 1 2 1]; % y方向
Gx = conv2(double(I), sobel_x, 'same');
Gy = conv2(double(I), sobel_y, 'same');
G = sqrt(Gx.^2 + Gy.^2);
G = uint8(G);
% 显示处理后的图像
imshow(G);
```
以上代码中,先读取原始图像并转换为灰度图像,然后定义Sobel算子的x和y方向卷积核,分别进行卷积计算得到Gx和Gy,再根据公式G=sqrt(Gx^2+Gy^2)计算出边缘强度G,最后将G转换为uint8类型并显示处理后的图像。