【问题标题】:Vec3b does not take three arguments?Vec3b 不接受三个参数?
【发布时间】:2012-10-10 08:58:46
【问题描述】:

我正在使用类来创建一个函数。该函数必须在提供的图像中找到选定的颜色。所以我这样做是为了让函数采用 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 个值吗?就像我在代码中所做的那样?

【问题讨论】:

  • 我忘了说setcolor(19,69,139)是棕色的BGR值。

标签: opencv


【解决方案1】:

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

如果你想要单行解决方案,试试这个:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-10
      • 2018-11-29
      • 1970-01-01
      • 2019-04-21
      相关资源
      最近更新 更多