如何在Matlab中裁剪这五个点的图像?
我想在这五点中裁剪图像 我已经做了一些代码,但它没有工作 我想在以下五点内裁剪图像:如何在Matlab中裁剪这五个点的图像?,matlab,Matlab,我想在这五点中裁剪图像 我已经做了一些代码,但它没有工作 我想在以下五点内裁剪图像: bw=baseimage; cc=regionprops(bw,'Centroid'); fixedPoints=cat(1,cc.Centroid); bx1=floor(fixedPoints(1)); bx5=floor(fixedPoints(5)); by1=floor(fixedPoints(6)); by5=floor(fixedPoints(10)); base_crop=imcrop(n_i
bw=baseimage;
cc=regionprops(bw,'Centroid');
fixedPoints=cat(1,cc.Centroid);
bx1=floor(fixedPoints(1));
bx5=floor(fixedPoints(5));
by1=floor(fixedPoints(6));
by5=floor(fixedPoints(10));
base_crop=imcrop(n_im_base,[bx1 by1 bx5 by5]);
figure,imshow(base_crop);
Imcrop采用以下参数imcropbw,[xmin-ymin-width-height] 所以你需要确定xmin,ymin,宽度和高度 如果5个点未形成矩形,也可以创建遮罩,以便仅显示感兴趣的区域:
%returns the 2-D convex hull of the points (X,Y)
k = convhull(c(:,1),c(:,2));
%create the mask
mask = poly2mask(c(k,1),c(k,2),size(bw,1),size(bw,2));
这里有一个解决方案,它不需要图像处理工具箱,而且可能更直接 %读取输入图像 img=imread'swq1I.jpg'; %消除JPG工件im2bw、imbinarize imgimg<100=0; imgimg>100=255; 图1; imshowimg; %用于检测xmin等的行和列求和。 x=总和,1; y=总和,2; %每行和每列的第一个和最后一个非零元素描述边界矩形 xmin=findx,1,‘第一’; xmax=findx,1,'last'; ymin=findy,1,‘第一’; ymax=findy,1,'最后'; %通过简单数组索引进行裁剪 crop=imgymin:ymax,xmin:xmax; 图2; imshowcrop; 结果如下所示:
嗨@Khataab!请分享您编写的代码,并描述它到底如何不起作用实际行为是什么,它与预期行为有何不同?我感谢您的帮助,它使我接近解决方案,但我不想包括这五点,它必须是不可见的。您是否可以编辑您的问题以包括在图像顶部添加所需的感兴趣区域。
%returns the 2-D convex hull of the points (X,Y)
k = convhull(c(:,1),c(:,2));
%create the mask
mask = poly2mask(c(k,1),c(k,2),size(bw,1),size(bw,2));