OpenCV:调整图像大小

chh*_*ing 1 c opencv

我似乎错过了一些东西,但我无法理解如何调整图像大小.这是代码:

#include <opencv2\core\core.hpp>
#include <opencv2\imgproc\imgproc.hpp>
#include <opencv2\highgui\highgui.hpp>

using namespace cv;

int main(int argc, char* argv[])
{
    IplImage* src = NULL;
    IplImage* dst = NULL;
    src = cvLoadImage("image.tif");
    dst = cvCreateImage(cvSize( src->width / 10, src->height / 10 ), src->depth, src->nChannels );

    resize(src, dst, dst->nSize, 0.1, 0.1, CV_INTER_AREA );

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是这段代码只会导致编译错误:

error C2664: 'cv::resize' : cannot convert parameter 1 from 'IplImage *' to 'cv::InputArray'
Run Code Online (Sandbox Code Playgroud)

谁能告诉我这里有什么问题?我是说如何从IplImage创建InputArray?

谢谢,克里斯蒂安

fli*_*lix 7

您正在混合使用OpenCV C和C++函数.如果您使用C++编程,则应使用Mat类来存储图像数据.另一方面,如果您使用纯C,则应使用函数cvResize来调整IplImage的大小.

正如您在OpenCV API文档中所看到的,每个函数都有一个C和C++编程接口.它们本质上是一样的,你当然可以在C++中使用C函数,但是你不能将C OpenCV结构(如IplImage)与C++ OpenCV函数(如resize())一起使用.

简介介绍了OpenCV C++ API的基本概念.