2012-05-03 32 views

Trả lời

5

Có thể bạn đang tìm kiếm 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

thay đổi kích thước() với nội suy = INTER_NEAREST.

EDIT

hmmm, những gì nếu bạn viết chức năng tự quản lý?

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); 
    } 
} 

Tôi chưa kiểm tra xem mã có hoạt động hay không (rất có thể là không), nhưng bạn có ý tưởng.

+0

Cụ thể hơn, tôi muốn vứt bỏ tất cả, ngay cả hàng và cột. Thật không may, đề nghị quý vị phun rất nhiều BUUUs: 'mẫu Mat_ DownsampleFromGrid8ToGrid16 (Mat_ & x) { \t Mat_ res (Size (x.cols/2, x.rows/2)); \t for (int i = 0; i tmp; \t thay đổi kích thước (x, tmp, Kích thước (res.cols, res.rows), 0, 0, INTER_NEAREST); \t for (int i = 0; i

-1

Bạn có thể sử dụng Kim tự tháp hình ảnh: pyrDown, các liên kết của các tài liệu OpenCV là http://docs.opencv.org/2.4/doc/tutorials/imgproc/pyramids/pyramids.html

+0

Trong khi điều này về lý thuyết có thể trả lời câu hỏi, [nó sẽ là thích hợp hơn] (// meta.stackoverflow.com/q/8259) để bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo. – Raju

+1

Câu hỏi cụ thể yêu cầu mà không làm mịn và đề cập đến pyrDown làm ví dụ truy cập. Trừ khi bạn có giải thích về cách pyrDown có thể được sử dụng để downsample mà không làm mịn, điều này không trả lời câu hỏi. – Cecilia

Các vấn đề liên quan