2012-10-10 19 views
2

我使用類來創建一個函數。該功能必須在提供的圖像中找到選定的顏色。所以我這樣做是爲了讓函數獲得一個Vec3b值,因爲它是我們正在討論的RGB值。Vec3b不需要三個參數?

class colorcompare 
{ 
private: 
int threshold; 
Vec3b color; 

void setcolor(Vec3b); 
Mat process(Mat&); 
void setthresh(const int); 
int getdist(Vec3b); 
}; 

void colorcompare::setcolor(Vec3b colr) 
{ 
color = colr; 
} 

int _tmain(int argc, _TCHAR* argv[]) 
{ 

colorcompare cc1; 
Mat image; 

image = imread("c:\\car2.jpg", -1); 

cc1.setcolor(19,69,139); //This is where im getting error 
cc1.setthresh(100); 
namedWindow("meh"); 

imshow("meh", cc1.process(image)); 
waitKey(0); 



return 0; 
} 

現在我得到的錯誤是這樣的:'colorcompare::setcolor' : function does not take 3 arguments

我知道vec3b是3個值的向量,所以換句話說,我可以作爲顏色[0]訪問vec3b的各個值,顏色[1]和顏色[2]。

我知道我可以在上面的函數中像這樣定義它,但它不應該vec3b能夠取3個值?就像我在我的代碼中做的一樣?

+0

我忘了提,''的setColor(19,69,139)''是棕色的BGR值。 – StuckInPhD

回答

5

典型的錯誤:該函數需要cv::Vec3b對象,而不是3個int變量

如果你想有一個單一的在線解決方案,試試這個:

cc1.setcolor(cv::Vec3b(19,69,139)); 
+0

謝謝,這真的很有幫助。 – StuckInPhD

1

您定義的setColor採取Vec3b作爲參數,所以你應該給它一個Vec3b:

cv::Vec3b color(19,69,139); // or cv::Vec3b color; color[0]=19, ... 
cc1.setColor(color); 
相關問題