2012-09-02 145 views
1

我似乎錯過了一些東西,但我無法理解如何調整圖像大小。這裏是代碼: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

回答

7

你混合了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