Есть ли встроенный способ понизить изображение в OpenCV 2.3.1 без предварительного гауссова сглаживания (что выполняется функцией pyrDown C++).Даунсэмплинга без сглаживания
Спасибо.
Есть ли встроенный способ понизить изображение в OpenCV 2.3.1 без предварительного гауссова сглаживания (что выполняется функцией pyrDown C++).Даунсэмплинга без сглаживания
Спасибо.
Возможно, вы ищете resize().
#Python code:
pct = 0.2
newsize = (int(large_img.shape[0] * pct), int(large_img.shape[1] * pct))
small_img = cv2.resize(large_img, newsize)
изменение размера() с интерполяцией = INTER_NEAREST.
EDIT
хммм, что, если вы пишете функцию самостоятельно?
double factor;
int newcols = round(mat.cols*factor);
int newrows = round(mat.rows*factor);
Mat newmat = Mat(newcol, newrows, mat.type());
for (int i=0;i<mat.cols;i++){
for (int j=0;j<mat.cols;j++){
newmat_<yourtype> (round(i*factor), round(j*factor)) = mat_<yourtype>(i, j);
}
}
Я не проверял, работает ли код или нет (скорее всего, нет), но вы получаете идею.
Вы можете использовать Пирамиды Изображения: pyrDown, звенья OpenCV документа является http://docs.opencv.org/2.4/doc/tutorials/imgproc/pyramids/pyramids.html
Хотя это теоретически может ответить на вопрос, [было бы желательно] (// meta.stackoverflow.com/q/8259) включить сюда основные части ответа и предоставить ссылку для справки. – Raju
Вопрос конкретно задает вопрос без сглаживания и упоминает pyrDown как примерный пример. Если вы не включаете объяснение того, как pyrDown можно использовать для downsample без сглаживания, это не отвечает на вопрос. – Cecilia
Более конкретно, я хотел бы, чтобы выбросить все четные строки и столбцы. К сожалению, ваше предложение плюет много BUUUs: 'шаблон Mat_ DownsampleFromGrid8ToGrid16 (Mat_ & х) { \t Mat_ разрешения (размера (x.cols/2, x.rows/2)); \t для (INT I = 0; г tmp; \t изменить размер (x, tmp, размер (res.cols, res.rows), 0, 0, INTER_NEAREST); \t для (INT I = 0; г