1

我似乎错过了一些东西,但我不明白如何调整图像大小。这是代码:

#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;
}

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

error C2664: 'cv::resize' : cannot convert parameter 1 from 'IplImage *' to 'cv::InputArray'

有人可以告诉我这里有什么问题吗?我的意思是如何从 IplImage 创建 InputArray?

谢谢,克里斯蒂安

4

1 回答 1

7

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

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

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

于 2012-09-02T01:51:12.087 回答