1

我有这个matlab代码,我试图在矩阵颜色中找到'j'。我在opencv中找不到一个有用的函数,它可以像matlab find do一样完成同样的工作。我尝试了一些带有3个for循环的迭代方法,但是太麻烦了,大家能帮帮我吗?

if (find(Colorr==j))
    tt=tt+1;
    test=[test;ColorValues(:,j,1),ColorValues(:,j,2),ColorValues(:,j,3)];
end

这是我写的隐蔽到opencv的代码

for(j=0;j<ColorValues.cols/2;j++)
    for(i=0;i<Color.cols;i++){
        if(j=input[Color.step*i+1]){
            tt++;
            for(k=0;k<ColorValues.rows;k++){

            }
        }

    }
4

1 回答 1

3

假设Color是一个正确初始化的单通道cv::Mat,你可以使用重载operator==和的组合cv::countNonZero()来做你想做的事。返回一个掩码,如果匹配中operator==的值,则每个元素为一,否则为零。Colorj

if(cv::countNonZero(Color == j))
{
   // Do something...
}
于 2013-07-15T15:29:33.800 回答