如何让matlab里的图片里选择的点显示其数组坐标而不是真实坐标
时间: 2023-07-31 13:02:32 浏览: 108
在MATLAB中,我们可以使用以下几个步骤,将图像中所选择的点的真实坐标转换为数组坐标:
1. 首先,加载图像并显示在MATLAB中:
```matlab
img = imread('image.jpg');
figure, imshow(img);
```
2. 接下来,使用`ginput`函数来让用户从图像中选择点,并将选择的点的坐标存储到一个变量中:
```matlab
points = ginput(); % 用户选择点
```
3. 获取图像的数组大小,以便将真实坐标转换为数组坐标:
```matlab
[rows, cols, ~] = size(img); % 获取图像的行数和列数
```
4. 对于每个选择的点,将其真实坐标转换为数组坐标:
```matlab
array_coords = points(:, 2: -1: 1) .* [cols, rows]; % 转换为数组坐标
```
这里,我们首先使用逆序操作`-1`将x和y坐标位置互换,然后乘以图像的行数和列数。这样可以将真实坐标转换为与数组大小匹配的坐标。
5. 最后,显示转换后的数组坐标:
```matlab
disp(array_coords);
```
这将在命令窗口中显示转换后的数组坐标。
综上所述,通过使用以上步骤,我们可以在MATLAB中实现将图像中所选点的真实坐标转换为数组坐标,并显示其数组坐标。
相关问题
matlab实现一个坐标点矩阵,如何去重重复的坐标
在 MATLAB 中,你可以使用 `unique` 函数来去重重复的坐标。如果你的坐标点矩阵是一个二维数组,每一行代表一个坐标点,你可以按照以下步骤进行去重:
1. 将二维数组中的每个坐标点转换为字符串格式。
2. 使用 `unique` 函数对字符串数组进行去重。
3. 将去重后的字符串数组转换回坐标点矩阵格式。
以下是一个示例代码,演示如何在 MATLAB 中去重坐标点矩阵:
```matlab
% 坐标点矩阵
matrix = [1, 2; 3, 4; 1, 2; 5, 6; 3, 4];
% 将坐标点转换为字符串格式
str_matrix = string(matrix);
% 去重字符串数组
unique_str_matrix = unique(str_matrix);
% 将字符串数组转换回坐标点矩阵格式
unique_matrix = str2double(unique_str_matrix);
% 输出去重后的坐标点矩阵
disp(unique_matrix);
```
该代码将输出:
```
1 2
3 4
5 6
```
即去重后的坐标点矩阵。请注意,这里的去重是基于每个坐标点的值是否相同进行的,而不是基于坐标点的位置是否相同。如果你需要基于位置进行去重,请使用其他方法。
阅读全文