2013-10-16 38 views
0

我正在使用Visual Studio 2010窗體應用程序C++的opencv。但它不允許調用內置函數。它提供了這樣的錯誤與Windows窗體應用程序一起使用時發生opencv錯誤

錯誤1錯誤C3861: 'cvCvtColor':標識符沒有找到C:\用戶\阿霞\文檔\ Visual Studio 2010的\項目\ ABC \ ABC \ Form1.h 140 1 ABC

錯誤2錯誤C3861: 'cvCvtPixToPlane':標識符沒有發現C:\用戶\阿霞\文件\視覺工作室2010 \項目\ ABC \ ABC \ Form1.h 146 1 ABC

我已經添加了下列頭

#include "highgui.h" 
#include "opencv2/imgproc/imgproc.hpp" 
#include "opencv2/core/core.hpp"  
#include "opencv2/highgui/highgui.hpp" 

任何人都可以告訴我我做錯了什麼。

+0

您使用哪種OpenCV版本,也許它確實不是您的版本的成員。 – retinotop

+0

在發佈有關編譯器錯誤的問題時,請包含* complete *和*未編輯*錯誤日誌。請修改您的問題以包含該問題。 –

+0

我正在使用opencv2.3 – user2740528

回答

0

cvCvtColor是OpenCV的C API函數,但您打算使用C++函數。您有2種方法來解決問題:

1)(推薦)更改您的源代碼以使用C++ API。您應該使用cv::Mat代替CvArrcv::cvtColor代替cvCvtColor

2)由於在源代碼這樣的變化可以相當參與,您還可以通過包括C-頭

#include "opencv2/imgproc/imgproc_c.h" 
#include "opencv2/core/core_c.h"  
#include "opencv2/highgui/highgui_c.h" 
使用C API

而不是C++(* .hpp)

+0

使用ist建議錯誤保持不變 – user2740528

+0

ans在第二個它沒有識別標題的情況下 – user2740528

+0

對我來說,這一個解決了問題#include ' – Misaki

0

您提到它的錯誤是一個鏈接器錯誤,我想。 正如你包含兩個頭文件highgui.hpp和highgui.h,目標是opencv_highgui23#的相同庫。 只包含一個標題。

+0

嘗試過但錯誤仍然相同 – user2740528

+0

您是否在項目配置中添加了OpenCV庫? –

+0

是的,我已添加 – user2740528

3

不幸的是,OP沒有說他使用的是什麼版本的OpenCV。

使用OpenCV 3.0時,請使用cvSplit()而不是cvCvtPixToPlane()

cvCvtColor()應與OpenCV 3.0協同工作,前提是您已將必需的頭文件添加到您的項目中。

最後,爲了確保您不會錯過項目中的任何必需文件,只需使用#include <opencv2\opencv.hpp>開始您的代碼即可。

相關問題