reescalar redimensionar imagen c++ opencv image-resizing

c++ - redimensionar - ¿Cómo cambiar el tamaño de una imagen a un tamaño específico en OpenCV?



redimensionar imagen opencv python (5)

IplImage* img = cvLoadImage("something.jpg"); IplImage* src = cvLoadImage("src.jpg"); cvSub(src, img, img);

Pero el tamaño de la imagen de origen es diferente de img .

¿Hay alguna función de OpenCV para redimensionarla al tamaño de img ?


Haga una función útil como esta:

IplImage* img_resize(IplImage* src_img, int new_width,int new_height) { IplImage* des_img; des_img=cvCreateImage(cvSize(new_width,new_height),src_img->depth,src_img->nChannels); cvResize(src_img,des_img,CV_INTER_LINEAR); return des_img; }


Las dos funciones que necesita están documentadas aquí:

  1. imread : lee una imagen del disco.
  2. Cambio de tamaño de la imagen : cambie el tamaño a cualquier tamaño.

En breve:

// Load images in the C++ format cv::Mat img = cv::imread("something.jpg"); cv::Mat src = cv::imread("src.jpg"); // Resize src so that is has the same size as img cv::resize(src, src, img.size());

Y, por favor, dejen de usar las antiguas y completamente desaprobadas clases IplImage *


Para su información, el equivalente de Python es:

imageBuffer = cv.LoadImage( strSrc ) nW = new X size nH = new Y size smallerImage = cv.CreateImage( (nH, nW), imageBuffer.depth, imageBuffer.nChannels ) cv.Resize( imageBuffer, smallerImage , interpolation=cv.CV_INTER_CUBIC ) cv.SaveImage( strDst, smallerImage )


Puede usar CvInvoke.Resize para Emgu.CV 3.0

p.ej

CvInvoke.Resize(inputImage, outputImage, new System.Drawing.Size(100, 100), 0, 0, Inter.Cubic);

Los detalles estan here


Puedes usar cvResize . O mejor, utilice la interfaz c ++ (por ejemplo, cv::Mat lugar de IplImage y cv::imread lugar de cvLoadImage ) y luego use cv::resize que maneja la asignación de memoria y la desasignación.