我需要你的帮助。 我在Matlab工作,我有两个大小为256 * 256的图像,另一个大小为64 * 64。我想将小图像嵌入到第一个图像中,但我想控制嵌入过程的位置。 例如,在大图像的角落有小图像然后我想在中间改变它... 你知道怎么样吗? 谢谢
答案 0 :(得分:2)
这是一种使用ginput
的方法,您可以使用它选择多个点并获取其x-y坐标。在这里,用户选择单个点(因此我们使用ginput(1)
),它成为小图像的左上角,放置在大图像的“内部”。我建议将这个确切的代码复制到.m文件中并使用它。
如果您有任何疑问,请询问。
function PlaceImage
clear
clc
close all
%// Create figure and uielements
handles.fig = figure('Position',[440 400 500 230]);
handles.DispButton = uicontrol('Style','Pushbutton','Position',[20 70 80 40],'String','Select point','Callback',@PlaceImageCallback);
%// Set up big and small images
OriginalBigIm = imread('coins.png');
SmallIm = imread('circuit.tif');
SmallIm = imresize(SmallIm,[60 60]);
%// Get size of small image
[heightSmall,WidthSmall] = size(SmallIm);
imshow(OriginalBigIm,[]);
function PlaceImageCallback(~,~)
BigIm = OriginalBigIm;
imshow(OriginalBigIm,[]);
%// Select a point where to put the top-left corner of the small image
[xTopLeft,yTopLeft] = ginput(1);
xTopLeft = round(xTopLeft);
yTopLeft = round(yTopLeft);
%// Replace pixels in the big image with the small image
BigIm(yTopLeft:yTopLeft+heightSmall-1,xTopLeft:xTopLeft+WidthSmall-1) = SmallIm;
%// Display result
imshow(BigIm,[]);
end
end
按下按钮后输出样品。如果再按一次,则会显示原始图像,因此您可以根据需要更改小图像的位置。