Có cách tích hợp để downsample một hình ảnh trong OpenCV 2.3.1 mà không cần làm mịn Gaussian trước (được thực hiện bởi hàm pyrDown C++).Downsampling mà không làm mịn
Cảm ơn.
Có cách tích hợp để downsample một hình ảnh trong OpenCV 2.3.1 mà không cần làm mịn Gaussian trước (được thực hiện bởi hàm pyrDown C++).Downsampling mà không làm mịn
Cảm ơn.
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)
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.
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
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
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ụ 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