Comment redimensionner une image à une taille spécifique dans OpenCV?

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

Mais la taille de l'image source est différent de img.

opencv fonction pour redimensionner la img taille?

27
demandé sur Noha Kareem 2012-07-27 01:47:32

5 réponses

Vous pouvez utiliser cvResize. Ou mieux utiliser l'interface c++ (par exemple cv::Mat au lieu de IplImage et cv::imread au lieu de cvLoadImage) et ensuite utiliser cv::resize qui gère l'allocation de mémoire et la désallocation elle-même.

37
répondu Mohammad 2014-01-24 19:38:48

Les deux fonctions dont vous avez besoin sont documentées ici:

  1. imread: lire une image à partir du disque.
  2. redimensionnement de L'Image: redimensionner à toute taille.

En bref:

// 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());

Et s'il vous plaît, s'il vous plaît, arrêtez d'utiliser le vieux et complètement obsolète IplImage* les classes

31
répondu Régis B. 2014-09-26 09:07:23

pour votre information, l'équivalent python est:

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 )
10
répondu Alexandre Mazel 2014-04-02 01:55:21

Faire une fonction utile comme ceci:

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;
} 
5
répondu William 2012-12-03 13:19:14

Vous pouvez utiliser CvInvoke.ResizeEmgu.CV 3.0

e.g

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

Détails ici

0
répondu Muhammed Tanrıverdi 2016-04-13 09:07:59