2012-02-15 124 views
1

如果我不使用任何命名空間我的代碼工作得很好,但是當我嘗試使用方法與命名空間是這樣的:什麼是OpenCV HighGUI命名空間?

cv::nameOfMethodInHighGUI()

編譯器告訴我,cv沒有叫這樣的成員方法。

所以我以爲highgui.hcv.h有不同的名稱空間,我說得對嗎?

任何人都可以告訴我應該用什麼命名空間來調用頭文件highgui.h中的方法嗎?

回答

3

所有opencv函數都參與命名空間cv!

因此,爲了顯示你可以使用CV :: imshow(上OpenCV的> 2)

+0

這是我的想法,但如果我打電話給這樣的方法: cv :: cvShowImage(imagePath.c_str(),frame);我得到這個編譯器錯誤: 'cvShowImage'不是'cv'的成員 – Matteo 2012-02-15 10:34:20

+3

這是因爲它現在是'cv :: imshow()',如文檔(for 2.3)中所述:http://opencv.itseez .com/modules/highgui/doc/user_interface.html #imshow – 2012-02-15 10:39:29

+0

是的,但是如果您使用命名空間,功能的「cv」前綴將會消失!並且一些功能被重新命名。 – 2012-02-15 10:39:51

0

看見highgui.h的圖像,我有以下想法: 也許您不小心混合了老式和新OpenCV2包括頭文件(都與OpenCV2 +庫一起提供)。

我建議僅使用

#include<opencv2/core/core.hpp> 
#include<opencv2/highgui/highgui.hpp> 

他們在cv命名空間中的每個函數。