Matlab中如何在图像中心绘制黑色十字像素?
在Matlab图像中心绘制4个黑色像素十字的实现
核心思路
先计算图像的中心坐标,定位中心上下左右四个像素点,再通过循环逐个将这些点设为黑色。以下是具体步骤和代码:
完整代码示例
% 1. 准备图像:可创建空白图或读取现有图像 % 示例:创建100x100的白色灰度图 img = 255 * ones(100, 100, 'uint8'); % 若读取现有RGB图像,用:img = imread('your_image_path.jpg'); % 2. 获取图像尺寸 [h, w, channels] = size(img); % 3. 计算图像中心坐标(适配奇偶尺寸,Matlab索引从1开始) center_row = round(h / 2); center_col = round(w / 2); % 4. 定义十字四个方向的偏移量(上、下、左、右) cross_offsets = [-1 0; 1 0; 0 -1; 0 1]; % 5. 循环设置黑色像素 for idx = 1:4 current_row = center_row + cross_offsets(idx, 1); current_col = center_col + cross_offsets(idx, 2); % 边界检查:避免坐标超出图像范围报错 if current_row >= 1 && current_row <= h && current_col >= 1 && current_col <= w if channels == 3 % 处理RGB图像 img(current_row, current_col, :) = 0; else % 处理灰度图像 img(current_row, current_col) = 0; end end end % 6. 显示结果 imshow(img);
关键细节说明
- 中心坐标计算:
round(h/2)和round(w/2)能同时适配奇数和偶数尺寸的图像,比如100x100的图中心是(50,50),101x101的图中心是(51,51)。 - 边界检查:如果图像尺寸极小(比如2x2),中心的上下左右可能超出图像范围,这一步能避免运行报错。
- 图像类型适配:代码同时支持灰度图和RGB图,通过判断通道数
channels设置对应黑色值(灰度图设为0,RGB图每个通道都设为0)。
内容的提问来源于stack exchange,提问作者Cjmeta0667
相关产品推荐
相关产品推荐

