是否有内置方法可以在 OpenCV 2.3.1 中对图像进行下采样,而无需事先进行高斯平滑(由 pyrDown C++ 函数执行)。
谢谢。
也许您正在寻找resize()。
# Python code:
import cv2
large_img = cv2.imread('our_large_image.jpg')
small_to_large_image_size_ratio = 0.2
small_img = cv2.resize(large_img, # original image
(0,0), # set fx and fy, not the final size
fx=small_to_large_image_size_ratio,
fy=small_to_large_image_size_ratio,
interpolation=cv2.INTER_NEAREST)
interpolation=cv2.INTER_NEAREST
您可以使用这些插值方法中的任何一种来代替。
resize() 与插值= INTER_NEAREST。
编辑
嗯,如果你自己写函数呢?
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);
}
}
我没有检查代码是否有效(很可能不是),但你明白了。
可以使用Image Pyramids:pyrDown,opencv文档的链接是 http://docs.opencv.org/2.4/doc/tutorials/imgproc/pyramids/pyramids.html