OpenCV:调整图像大小

问题描述:

我似乎错过了一些东西,但我无法理解如何调整图像大小。这里是代码: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; 
} 

但这个代码只导致到编译器错误:

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

谁能告诉我什么是错在这里?我的意思是我如何从IplImage创建一个InputArray?

感谢, 基督教

+0

我包括core.hpp,imgproc.hpp和highgui.hpp。 – chhenning

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

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

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

+0

谢谢,我将用C++接口介绍自己。这只是有点奇怪,因为我小心只包含hpp头文件。 – chhenning

+0

这似乎不工作了。我创建了两个类似于OP的IplImages,但是当我尝试在它们上使用cvResize时,出现以下运行时错误: libC++ abi.dylib:以cv :: unicode异常终止:异常:[path] /src/matrix.cpp:698:错误:(-5)函数cvarrToMat中的未知数组类型 – rien333