matlab 处理图片小功能
一、MATLAB 怎么将2幅大小不同的图片一幅上一幅下合成一幅
1、思想:
将其中一幅图缩小或放大,让两幅图大小相等或者只要列数相等就可以。
2、代码:
scrimage1 = imread('sizea.jpg');
scrimage2 = imread('sizeb.jpg');
scrimage2 = imresize(scrimage1 , [NaN 256]);
post_image = [scrimage1 ;scrimage2];
imshow(post_image)
二、matlab图像剪裁命令imcrop()
1、调用格式:
I2=imcrop(I,RECT);
X2=imcrop(X,MAP,RECT);
RGB2=imcrop(RGB,RECT);
其中,I、X、RGB 分别对应灰度图像、索引图像、RGB 图像的数据矩阵,MAP 为索引图像颜色表,I2、X2、RGB2 分别为各自输入矩阵所对应的输出矩阵。而 RECT 为可选参数,格式为 [XMIN YMIN WIGTH HEIGHT].例如 [20 20 40 40],则剪裁后的图像的左上角像素为原图像位置在(20,20)的像素,而剪裁后图像的右下角像素为原图像位置在(60,60)的像素。
另外,如不加参数RECT,将使用鼠标在原图像上划矩形框的方法来实现图像的剪裁,所划矩形框内的图像将在新窗口中输出。
2、实例:
RGB=imread('test.jpg');
RGB1=imcrop(RGB,[60,255,400,425]);
imhsow(RGB);
figure
imshow(RGB1);
三、matlab 定位图像中像素坐标的方法
1、ginput
[x,y] = ginput(n),n为你想选的点的个数,鼠标点的那些点的横坐标和纵坐标就会保存到[x,y]中或者直接输入ginput,最后以回车结尾。
2、impixelinfo(更为方便)
显示图像后,直接在命令窗口输入impixelinfo敲回车(可以实时显示鼠标所在位置的坐标和像素值)
四、MATLAB:批量对图片进行裁剪
1、代码
%% crop the im into 256*256
clear;
clc;
file_path = 'path\to\your\images\'; % 设定你存放图片的目录
img_path_list = dir(strcat(file_path, '*.jpg')); % 选后缀为 .jpg 的图片
img_num = length(img_path_list); %获得图片数量
for j = 1:img_num
image_name = img_path_list(j).name;
image = imread(strcat(file_path, image_name));
crop_image = imcrop(image, [118, 85, 255, 255]);
% 使用 imcrop() 函数来裁剪图片,第二个参数的格式为 [XMIN YMIN WIDTH HEIGHT]
imwrite(crop_image, strcat('path\to\save\', image_name)); % 保存文件
end
2、代码中使用的函数:
dir() 列出符合字符串 strcat(file_path, ‘*.jpg’) 的所有文件;
strcat() 函数是用来把两个字符串合起来的;
imcrop(image, [XMIN YMIN WIDTH HEIGHT]) 指定了图片和需要裁剪的地方,指定的方式是,指定左上角,和需要裁剪的宽和高;
imwrite(image, path) 就是写文件的。
参考链接4