Сними колодки с OpenCV

Я должен перевести с 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);

0

Решение

Пытаться

cv::Rect roi(padSize, padSize, rpad.cols-2*padSize, rpad.rows-2*padSize);
cv::Mat result = rpad(roi);

И в зависимости от того, хотите ли вы использовать непрерывную память, вы можете напрямую использовать результат (прерывистый, обычно подходит для большинства функций OpenCV) или скопировать его обратно на rpad (непрерывный)

0

Другие решения

Можно ли умножить объект Mat на двумерный массив? Imfft, очевидно, объект Mat

      for (int i = 0; i &lt; rows; i++){
for (int j = 0; j &lt; cols; j++){
imfft=imfft*filter[i][j]
}
}
0

По вопросам рекламы [email protected]