2014-09-22 25 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越大的值佔的寬度和深度