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í:
- imread : lee una imagen del disco.
- 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.