Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Matlab中裁剪这五个点的图像?_Matlab - Fatal编程技术网

如何在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));