Image MATLAB帮助裁剪图像
我使用的是MATLAB R2012a,我试图让用户在不使用内置函数的情况下裁剪图像。Image MATLAB帮助裁剪图像,image,matlab,crop,Image,Matlab,Crop,我使用的是MATLAB R2012a,我试图让用户在不使用内置函数的情况下裁剪图像。 这是我的代码: [x, y] = ginput(2); m1 = [x(1), y(1)]; m2 = [x(2), y(2)]; m1 = int16(m1); m2 = int16(m2); [m, n] = size(manip); s1 = (m2(1) - m1(1))+1; s2 = (m2(2) - m2(2))+1; temp = zeros([s1, s2],('uint8')); p1 =
这是我的代码:
[x, y] = ginput(2);
m1 = [x(1), y(1)];
m2 = [x(2), y(2)];
m1 = int16(m1);
m2 = int16(m2);
[m, n] = size(manip);
s1 = (m2(1) - m1(1))+1;
s2 = (m2(2) - m2(2))+1;
temp = zeros([s1, s2],('uint8'));
p1 = 0;
p2 = 0;
for c1 = 1:m
if ((c1 <= m1(2)) && (c1 >= m2(2)))
for c2 = 1:n
if ((c2 <= m1(1)) && (c2 >= m2(1)))
temp(p1, p2) = manip(c1, c2);
end
p2 = p2 + 1;
end
end
p1 = p1 + 1;
end
out = temp;
[x,y]=ginput(2);
m1=[x(1),y(1)];
m2=[x(2),y(2)];
m1=int16(m1);
m2=int16(m2);
[m,n]=尺寸(manip);
s1=(m2(1)-m1(1))+1;
s2=(m2(2)-m2(2))+1;
温度=零([s1,s2],('uint8');
p1=0;
p2=0;
对于c1=1:m
如果((c1=m2(2)))
对于c2=1:n
如果((c2=m2(1)))
温度(p1,p2)=操纵(c1,c2);
结束
p2=p2+1;
结束
结束
p1=p1+1;
结束
输出=温度;
下面是我的结果:
任何关于我做错了什么的想法,我都看不出来。谢谢。我想你的错误在这里:
s2=(m2(2)-m2(2))+1代码>这不应该是s2=(m2(2)-m1(2))+1代码>
但是,您根本不需要该循环:
Iold = rand(300);
%crop 10 pixels off each side
Inew = Iold(11:end - 10, 11: end - 10);
或者,如果您需要大小相同但裁剪位为零的图像:
Inew = zeros(size(Iold));
Inew(11:end - 10, 11: end - 10) = Iold(11:end - 10, 11: end - 10);
或者概括一下:
Inew(xmin:xmax, ymin:ymax) = Iold(xmin:xmax, ymin:ymax);
我可以想象你的错误在这里:s2=(m2(2)-m2(2))+1代码>这不应该是s2=(m2(2)-m1(2))+1代码>
但是,您根本不需要该循环:
Iold = rand(300);
%crop 10 pixels off each side
Inew = Iold(11:end - 10, 11: end - 10);
或者,如果您需要大小相同但裁剪位为零的图像:
Inew = zeros(size(Iold));
Inew(11:end - 10, 11: end - 10) = Iold(11:end - 10, 11: end - 10);
或者概括一下:
Inew(xmin:xmax, ymin:ymax) = Iold(xmin:xmax, ymin:ymax);