Opencv Vec3b不接受三个参数?

Opencv Vec3b不接受三个参数?,opencv,Opencv,我使用类来创建函数。该功能必须在提供的图像中找到选定的颜色。所以我做了这个函数,因为它是我们正在讨论的RGB值,所以它取一个Vec3b值 class colorcompare { private: int threshold; Vec3b color; void setcolor(Vec3b); Mat process(Mat&); void setthresh(const int); int getdist(Vec3b); }; void colorcompare::setcolo

我使用类来创建函数。该功能必须在提供的图像中找到选定的颜色。所以我做了这个函数,因为它是我们正在讨论的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':函数不接受3个参数

我知道vec3b是一个包含3个值的向量,因此换句话说,我可以访问vec3b的各个值,如color[0]、color[1]和color[2]


我知道我可以在上面的函数中这样定义它,但它不应该取3个值吗?就像我在代码中所做的那样?

您定义了setColor以Vec3b作为参数,因此您应该给它一个Vec3b:

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

典型错误:函数需要一个
cv::Vec3b
对象,而不是3个
int
变量

如果需要单线解决方案,请尝试以下方法:

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

我忘了提到
setcolor(19,69139)
是brown的BGR值。