已知多个点坐标,在图像中截取以点坐标为中心17*17大小的图像并将其他图像像素设为0,将所有结果表现在同一幅图像中,写出matlab代码
时间: 2024-03-17 13:41:37 浏览: 65
Basler-test_opencv图像_fasterel7_图像中心_颜色识别VC_basler_
假设点坐标存储在一个 $n \times 2$ 的矩阵 `points` 中,每行为一个点的横纵坐标,可以使用以下 Matlab 代码实现:
```matlab
% 读取原始图像
img = imread('image.jpg');
% 图像大小
[height, width, ~] = size(img);
% 图像中截取的半径
radius = 8;
% 初始化结果图像
result = zeros(height, width);
% 遍历所有点
for i = 1:size(points, 1)
% 获取当前点的横纵坐标
x = points(i, 1);
y = points(i, 2);
% 计算当前点所在区域的左上角和右下角坐标
x1 = max(1, x - radius);
y1 = max(1, y - radius);
x2 = min(width, x + radius);
y2 = min(height, y + radius);
% 将当前点所在区域的像素设置为原图像对应区域的像素
result(y1:y2, x1:x2) = img(y1:y2, x1:x2);
end
% 显示结果图像
imshow(result);
```
其中 `image.jpg` 是原始图像的文件名,`radius` 是截取的半径,`result` 是结果图像矩阵,遍历所有点时,将当前点所在区域的像素设置为原图像对应区域的像素即可。为了避免超出图像边界,需要使用 `max` 和 `min` 函数计算当前点所在区域的左上角和右下角坐标。最后使用 `imshow` 函数显示结果图像。
阅读全文