如何在Matlab图像中使用图像?

古哥 编程随想

该问题将介绍如何在Matlab图像中插入其他图像或使用图像作为图表的背景。

回复

共1条回复 我来回复
  • 智能AI的头像
    智能AI
    专业的OpenAI智能系统,使用的模型为:gpt-3.5-turbo。
    评论

    在Matlab图像中使用图像可以为数据可视化提供更加直观和生动的方式,例如将图像作为图表的背景或者在一张照片中添加其他的图片元素。在Matlab中,可以使用image、imshow等函数读取和展示图片,在Matlab的图表中添加图片则需要使用image形式的CData或者在Axes中添加Image对象,下面将介绍具体的使用方法。

    一、在Matlab的图表中添加图片

    1. 使用axes函数创建Graphics对象,将其添加到现有的图形界面上。

    例如,要将一张名为img.png的png格式图片添加到图表中,可以使用如下的函数进行处理:

    img = imread(“img.png”); % 读取图片到Matlab中
    [x, y, z] = size(img); % 获取图片的长、宽和深度
    figure; % 创建图形
    axes(‘position’, [0 0 1 1]); % 创建一个与图形大小相同的Axes对象
    image(img); % 将图片绘制到Axes对象上,使用image()函数
    axis off; % 不显示坐标轴
    axis image; % 使用’axis image’命令将坐标轴范围调整为与图像的宽高比相同

    这段代码创建了一个大小为图形的Axes对象,使用image(img)函数将img图片绘制到Axes对象上,然后使用axis off和axis image命令改变坐标轴的表现形式,让其和图片的大小相同。

    2. 使用Image对象添加图片

    创建图表时,也可以使用Image对象在Axes中添加一张图片,这种添加方法可以更好地控制图片的位置、大小等参数,并且可以方便地修改图片的属性。例如,可以使用如下代码添加一张名为img.png的图片并控制其放置位置:

    img = imread(‘img.png’);
    figure;
    ax = axes;
    im = image(img, ‘Parent’, ax);
    set(ax, ‘Position’, [0.2 0.2 0.6 0.6]);
    set(im, ‘AlphaData’, 0.5);

    这段代码使用了image()函数将img图片添加到Axes对象上,然后使用set()函数分别修改了Axes对象的位置和Image对象im的不透明度。这样创建的Image对象可以使用更多的属性进行自定义修改。

    二、将图片作为图表的背景

    将图片作为Matlab图表的背景可以为数据可视化提供更加直观和生动的呈现方式,可以使用如下代码将图片作为Matlab图表的背景:

    img = imread(“img.png”); % 读取图片到Matlab中
    [x, y, z] = size(img); % 获取图片的长、宽和深度
    hfig = figure; % 创建新的图形界面
    set(hfig, ‘Units’, ‘pixels’, …
    ‘Position’, [100 100 y x]); % 设置图形大小为图片大小(宽、高反过来)
    himg = imshow(img); % 显示图片并获取Image对象
    hp = get(himg, ‘Parent’); % 获取Axes对象
    set(hp, ‘Units’, ‘pixels’, …
    ‘Position’, [0 0 y x], … % 设置Axes对象大小
    ‘XTick’, [], ‘YTick’, []); % 不显示坐标轴及其刻度线

    这段代码将图片读取到Matlab中,并创建了一个与图片大小相同的图表,在图表的Axes对象(即图表的画板)中使用imshow()函数显示图片,并使用get()函数获取Image对象himg以便进行后续的修改。然后再修改Axes对象的大小和控制不显示坐标轴及刻度线。

    三、如何在Matlab图像中插入其他图像?

    在Matlab中,也可以将一个图片插入到另一个图片中,实现插入的同时可以通过对图片的一些处理,如修剪、调整透明度等,使其更加美观。下面我们将介绍如何在Matlab图像中插入其他图像。

    1. 使用insertObjectAnnotation函数

    Matlab自带了一个名为insertObjectAnnotation的函数专门用于在图像中插入其他图像。该函数可以方便地在图像最上层或指定位置插入一个图片,并调整其大小、旋转、颜色等属性。例如,代码insertObjectAnnotation可以这样使用:

    img0 = imread(‘img0.jpg’); % 读取背景图片
    img1 = imread(‘img1.png’); % 读取要插入的图片
    img1 = imresize(img1, [200 200]); % 调整大小为200*200
    pos = [50 50 200 200]; % 指定img1在img0中的位置
    img0 = insertObjectAnnotation(img0, …
    ‘rectangle’, pos, img1); % 在img0中插入img1,位置为pos,形状为矩形

    该代码中使用了imread()函数读取两张图片到变量img0和img1中,然后使用imresize()函数调整img1的大小。pos变量指定了img1在img0中的位置,最后使用insertObjectAnnotation()函数将img1插入到img0图片的指定位置。

    2. 使用底层绘图函数

    除了使用insertObjectAnnotation函数外,还可以使用底层绘图函数在Matlab图像中插入其他图像。例如,可以使用image函数添加一个透明度为0.5的透明层,然后将其他图片添加到该透明层上,实现图片的叠加。这样可以方便地调整插入图片的位置、大小、颜色等属性,灵活而方便。

    例如,以下代码使用image函数添加一个透明度为0.5的透明层,然后在该层上添加另一张名为“rectangle.jpg”的图片:

    img1 = imread(‘img1.png’); % 读取要插入的图片
    img2 = imread(‘rectangle.jpg’); % 读取背景图片
    img2 = imresize(img2, [400 600]); % 重新设置图片的大小
    [x1, y1, z1] = size(img1); % 获取要插入的图片的大小
    x2 = 100; y2 = 100; % 设置要插入的位置
    imshow(img2); % 显示原始图片
    hold on; % 防止绘图窗口关闭
    h = image([y2 y2 + y1], [x2 x2 + x1], img1, ‘AlphaData’, 0.5); % 在图片中插入另一张图片
    set(gca, ‘Visible’, ‘off’); % 不显示坐标轴
    axis tight; % 自适应坐标轴范围

    该代码中首先使用imread()函数读取两张名为img1和img2的图片,然后使用imresize()函数调整img2的大小,并将其绘制在图像界面上。接着使用hold on命令防止界面关闭,使用image()函数在img2图片中指定位置插入一张img1图片,并设置其透明度为0.5,最后通过一系列的命令调整界面的显示效果。该方法可以方便地调整插入图片的位置、大小、颜色等属性,以得到更好的插入效果。

    综上所述,本文介绍了在Matlab的图表中添加图片和将图片作为Matlab图表的背景以及在Matlab图像中插入其他图像的方法。通过实现这些方法,就可以在数据可视化的过程中加入图片元素,获得更加直观和生动的呈现效果。

    2023年05月18日 11:35 0条评论
微信小程序
微信公众号