Я должен перевести с Matlab на C этот код:
% take off the pads
x = (1 + padSize) : (rows - pad8Size);
y = (1 + padSize) : (cols - padSize);
rpad=rpad(x,y);
1-й и 2-й создают массив 2, но я не знаю, как мне удалить его из объекта rpad Mat. Это может быть что-то вроде (вычесть каждый элемент)
for(int i=1+pad;i<=rows-pad;i++){
for(int j=1+pad;i<=cols-pad;j++){
subtract(rpad,x,rpad);
subtract(rpad,y,rpad);}}
Или что-то вроде (удалить внешний элемент)
int a=(rows-pad)-(1+pad);
int b=(cols-pad)-(1+pad);
rpad.create(img.rows - a,img.cols - b,original.type());
img.copyTo(rpad);
Пытаться
cv::Rect roi(padSize, padSize, rpad.cols-2*padSize, rpad.rows-2*padSize);
cv::Mat result = rpad(roi);
И в зависимости от того, хотите ли вы использовать непрерывную память, вы можете напрямую использовать результат (прерывистый, обычно подходит для большинства функций OpenCV) или скопировать его обратно на rpad (непрерывный)
Можно ли умножить объект Mat на двумерный массив? Imfft, очевидно, объект Mat
for (int i = 0; i < rows; i++){
for (int j = 0; j < cols; j++){
imfft=imfft*filter[i][j]
}
}