2012-05-03 59 views

回答

5

也許你正在尋找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) 
1

調整大小()與插值= 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); 
    } 
} 

我還沒有檢查代碼是否工作(很可能不是),但你明白了。

+0

更具體地說,我想扔掉,即使所有的行和列。不幸的是,你的建議吐出了很多BUUUs的: '模板 Mat_ DownsampleFromGrid8ToGrid16(Mat_ &X) { \t Mat_ RES(尺寸(x.cols/2,x.rows/2)); \t對(INT I = 0; I tmp; resize(x,tmp,Size(res.cols,res.rows),0,0,INTER_NEAREST); \t對(INT I = 0; I

-1

您可以使用圖像金字塔:pyrDown,OpenCV的文檔的鏈接是 http://docs.opencv.org/2.4/doc/tutorials/imgproc/pyramids/pyramids.html

+0

雖然這在理論上可以回答的問題,[這將是優選的](// meta.stackoverflow.com/q/8259)以包括回答的主要部分在這裏,並提供鏈路參考。 – Raju

+1

這個問題明確要求不平滑並提及pyrDown作爲反例。除非你包含了如何使用pyrDown進行下采樣而不進行平滑的解釋,否則這並不能回答這個問題。 – Cecilia