Я столкнулся с этой проблемой, когда попытался установить библиотеку numpy на моем python 3.5. Решение заключается в установке VS2015. У меня был VS2008, 2012, 2013, ни один из которых не совместим с python 3.5. По-видимому, более новая версия python зависит от более новых версий VS.
Также убедитесь, что C ++ Common Tools установлены с Visual Studio.
Вот пример использования MAT2CELL. Он делит изображение на плит N-by-M и обрабатывает случай, когда размер изображения не равномерно делится на количество фрагментов.
%# 2D grayscale image
I = imread('coins.png');
%# desird number of horizontal/vertical tiles to divide the image into
numBlkH = 4;
numBlkW = 4;
%# compute size of each tile in pixels
[imgH,imgW,~] = size(I);
szBlkH = [repmat(fix(imgH/numBlkH),1,numBlkH-1) imgH-fix(imgH/numBlkH)*(numBlkH-1)];
szBlkW = [repmat(fix(imgW/numBlkW),1,numBlkW-1) imgW-fix(imgW/numBlkW)*(numBlkW-1)];
%# divide into tiles, and linearize using a row-major order
C = mat2cell(I, szBlkH, szBlkW)';
C = C(:);
%# display tiles i subplots
figure, imshow(I)
figure
for i=1:numBlkH*numBlkW
subplot(numBlkH,numBlkW,i), imshow( C{i} )
end
Входное изображение и результирующие фрагменты:
[/g0] [/g1]
Не будет ли mat2tiles вместе с cellfun
и cell2mat
делать больше или меньше того, что делает blockproc
?
Вы можете написать обертку самостоятельно, чтобы она использовалась те же аргументы, что и blockproc
, я не думаю, что это должно быть так сложно.