Esiste un modo integrato per eseguire il downsampling di un'immagine in OpenCV 2.3.1 senza smoothing gaussiano (che viene eseguito dalla funzione pyrDown C++).Downsampling senza smoothing
Grazie.
Esiste un modo integrato per eseguire il downsampling di un'immagine in OpenCV 2.3.1 senza smoothing gaussiano (che viene eseguito dalla funzione pyrDown C++).Downsampling senza smoothing
Grazie.
Forse stai cercando 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)
ridimensiona() con interpolazione = INTER_NEAREST.
EDIT
hmmm, che cosa se si scrive la funzione di te stesso?
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);
}
}
non ho controllato se il codice funziona o meno (molto probabilmente non), ma si ottiene l'idea.
È possibile utilizzare Piramidi immagine: pyrDown, i collegamenti del documento OpenCV è http://docs.opencv.org/2.4/doc/tutorials/imgproc/pyramids/pyramids.html
Mentre questo può teoricamente rispondere alla domanda, [sarebbe preferibile] (// meta.stackoverflow.com/q/8259) per includere qui le parti essenziali della risposta e fornire il link per riferimento. – Raju
La domanda richiede specificamente senza livellamento e menziona pyrDown come esempio contrario. A meno che non includiate una spiegazione su come pyrDown può essere usato per ridimensionare senza levigare, questo non risponde alla domanda. – Cecilia
Più in particolare, mi piacerebbe buttare via tutti anche righe e colonne. Sfortunatamente, il tuo suggerimento sputa un sacco di BUUUs: 'modello Mat_ DownsampleFromGrid8ToGrid16 (Mat_ & x) { \t Mat_ res (Size (x.cols/2, x.rows/2)); \t for (int i = 0; i tmp; \t ridimensiona (x, tmp, Dimensione (res.cols, res.rows), 0, 0, INTER_NEAREST); \t for (int i = 0; i