我正在使用类来创建一个函数。该功能必须在提供的图像中找到所选颜色。所以我做了这个,所以函数采用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个值的向量,换句话说,我可以将vec3b的各个值作为color [0],color [1]和color [2]来访问。
而且我知道我可以在上面的函数中定义它,但它不应该vec3b能够取3个值吗?就像我在我的代码中所做的那样?
答案 0 :(得分:6)
经典错误:该函数需要cv::Vec3b
个对象,而不是3 int
个变量。
如果您需要单线解决方案,请尝试以下方法:
cc1.setcolor(cv::Vec3b(19,69,139));
答案 1 :(得分:1)
您定义了setColor以将Vec3b作为参数,因此您应该给它一个Vec3b:
cv::Vec3b color(19,69,139); // or cv::Vec3b color; color[0]=19, ...
cc1.setColor(color);