如何在OpenCV中将图像大小调整为特定大小?

Mil*_*d R 29 c++ opencv image-resizing

IplImage* img = cvLoadImage("something.jpg");
IplImage* src = cvLoadImage("src.jpg");
cvSub(src, img, img);
Run Code Online (Sandbox Code Playgroud)

但源图像的大小不同img.

是否有任何opencv函数来调整img大小?

Moh*_*mad 39

你可以用cvResize.或者更好地使用c ++接口(例如cv::Mat代替IplImagecv::imread不是代替cvLoadImage),然后使用cv::resize它来处理内存分配和释放本身.


Rég*_* B. 34

您需要的两个功能在此处记录:

  1. imread:从磁盘读取图像.
  2. 图像大小调整:调整为任何大小.

简而言之:

// 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());
Run Code Online (Sandbox Code Playgroud)

请,请停止使用旧的和完全弃用的IplImage*类


小智 10

为了您的信息,python等价物是:

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 )
Run Code Online (Sandbox Code Playgroud)


Lov*_*ill 6

做一个像这样的有用函数:

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;
} 
Run Code Online (Sandbox Code Playgroud)