2014-09-22 26 views
1

我试图采用imcrop的图像样本,但我有问题。我的代码的下一部分是尝试访问修补程序中的像素,但我得到一个错误:尝试访问修补程序(1,1);尝试访问修补程序(1,1);尝试访问修补程序索引超出范围,因为尺寸(贴片)= [0,0]Matlab imcrop返回一个图像大小为零

所以我增加,

disp(size(patch)) 

显然贴剂的尺寸是0 0,但我不理解为什么是这种情况。基于对有关imcrop堆栈溢出的其他问题,我也试过

patch = imcrop(sample, [x y x+patchsize-1 y+patchsize-1]) 

这也造成了其大小的补丁零

注:大小并不总是返回零,在第一种情况下,根据关于随机插入x和y的内容,补丁有时会有尺寸补丁大小,但它不会发生在100%以上的时间,而在第二个示例中,它有时会有大小不等的大小,但我无法理解这种不一致是来自哪里。

更新:

[sample_width, sample_height] = size(sample); 

应该是:这个问题从我的代码的一部分来

sample_width, sample_height, depth] = size(sample); 
+0

它可能不是错误的原因,但由于尺寸(...)给出的数行作为第一个输出,不应该在代码的第二行切换sample_width和sample_height? – 2014-09-22 01:00:03

+0

谢谢你,你绝对是对的,不幸的是在这种情况下它是一个方形图像,所以不是错误 – user3325965 2014-09-22 01:01:33

+0

哦拍的来源。出于好奇,样本的大小是多少? – 2014-09-22 01:03:34

回答

1

与原代码的问题是:

[sample_width, sample_height] = size(sample); 

应该是:

[sample_height, sample_width, sample_depth] = size(sample); 

RGB图像具有3个维度和如上声明会给sample_height越大的值占的宽度和深度