MATLAB用canny求得图像轮廓eg=edge(I,'canny',0.35),[x, y] = find(eg);之后,轮廓为左右对称的,根据x,y值将轮廓分为左右两边
时间: 2024-04-06 11:34:06 浏览: 14
要将图像轮廓按照 x 或 y 值分为左右两边,可以使用以下代码:
按照 x 值分割:
```matlab
% 读取图像
img = imread('example.png');
% 边缘检测
img_edge = edge(img, 'canny', 0.35);
% 获取轮廓点的坐标
[y, x] = find(img_edge);
boundary = [x, y];
% 找到图像中心列的位置
center_col = round(size(img, 2)/2);
% 将轮廓分为左右两边
left_boundary = boundary(boundary(:,1)<=center_col, :);
right_boundary = boundary(boundary(:,1)>center_col, :);
```
按照 y 值分割:
```matlab
% 读取图像
img = imread('example.png');
% 边缘检测
img_edge = edge(img, 'canny', 0.35);
% 获取轮廓点的坐标
[y, x] = find(img_edge);
boundary = [x, y];
% 找到图像中心行的位置
center_row = round(size(img, 1)/2);
% 将轮廓分为上下两部分
upper_boundary = boundary(boundary(:,2)<=center_row, :);
lower_boundary = boundary(boundary(:,2)>center_row, :);
```
这段代码假设你已经读取了一张图像,并使用 Canny 边缘检测方法得到了图像轮廓。然后它获取了轮廓点的坐标,并找到了图像中心行或列的位置。接着,根据中心行或列的位置,将轮廓分为左右或上下两部分。最后,它输出了分割后的左右或上下两部分轮廓坐标。