我正在使用类创建函数。该功能必须在提供的图像中找到选定的颜色。所以我这样做了,以便函数采用Vec3b值,因为它是我们正在谈论的RGB值。

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个值的 vector ,所以换句话说,我可以访问vec3b的各个值,例如color [0],color [1]和color [2]。

而且我知道我可以在上面的函数中这样定义它,但是vec3b不能接受3个值吗?就像我在代码中所做的一样?

最佳答案

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

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

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

10-08 13:25