У вас есть два 3d и вы матриц, необходимо добавить один к нижней части другого. Довольно просто сделать:
img1 = cat(3, rand(50, 50), rand(50,50), rand(50,50)); % Placeholder for image file data
img2 = ones(10, 50, 3); % Placeholder for text-containing image
img3 = [img1; img2]; % Stick them together
imshow(img3); % Show the generated image (here color noise with a white bar at the bottom)
Edit: фактическое изображение может хорошо быть в uint8 или uint16, а не двойной класс MATLAB по умолчанию. Для этого ваше изображение, содержащее текст, должно быть в одном классе. Класс может быть указан при вызове функции ones().
img1 = imread('c:\path\to\class\imgName.tif');
imgCls = class(img1); % determine class of loaded image
[height, width] = size(img1);
img2 = ones(FNameHeight, width, 3, imgCls);
img3 = [img1; img2];
imshow(img3);
Чтобы получить, скажем, черная полоса в нижней части изображения с именем файла на нем (и без дополнительных файлов или компьютерного зрения Toolbox), вы могли бы сделать что-то вроде этого:
imgFileName = 'C:\Users\Public\Pictures\Sample Pictures\koala.jpg';
img1 = imread(imgFileName);
imgCls = class(img1); % determine class of loaded image
[height, width, depth] = size(img1);
BarHeight = 20; % Height of black bar in pixels
blackBar = zeros(BarHeight, width, 3);
tempImg = figure();
tempAxes = axes('Parent', tempImg);
imshow(blackBar, 'Parent', tempAxes);
text(5, 1, imgFileName, 'color', 'w', 'VerticalAlignment', 'top', 'Interpreter', 'none');
textFrame = getframe(tempAxes);
close(tempImg);
img2 = cast(textFrame.cdata(:, 1:width, :), imgCls);
img3 = [img1; img2];
imshow(img3);
Так запустить через процедуру для нового блока кода:
Установите высоту, чтобы сделать текст бар (20 выглядит хорошо для шрифта по умолчанию)
Сделать матрицу нулей такого размера
Сделайте фигуру и оси, чтобы удерживать временную фигуру. Всегда хорошо быть явным для них, а не полагаться на «gca» и «gcf».
Показать черный бар в ваших новых осях.
Поместите текст поверх верхней черной полосы. Здесь вы можете играть с первыми двумя значениями для изменения позиции, а также с обычными свойствами text(). Свойство Interpreter позволяет MATLAB пытаться навязать LaTeX путь к файлу, что может привести к чрезмерно интересным результатам.
Используйте getframe(), чтобы вытащить псевдоопределение, которое вы создали в своих осях.
Закрыть временную фигуру.
Извлеките данные изображения, которые вы получили в вызове getframe(), убедившись, что это правая ширина, и нарисуйте его в том же классе, что и изображение, которое вы собираетесь придерживать на дне.
Затем, как и прежде, придерживайте эту панель на новом изображении и отобразите текст с добавлением изображения.
http://stackoverflow.com/questions/11726071/how-to-embed-a-watermark-on-an-image-using-edge-in-matlab http://www.mathworks.com/matlabcentral/ ответы/67364-how-can-i-watermark-an-image http://www.mathworks.com/matlabcentral/answers/102312-is-it-possible-to-add-a-timestamp-watermark-to-my -image-in-matlab-7-6-r2008a – Cheery