在循环中使用cvtColor

时间:2015-12-09 14:33:52

标签: c++ opencv

我正在尝试在循环中运行cvtColor命令。

    vector<Mat> RImages;
    vector<Mat> hImages;      

    for ( int idx = 0; idx < blocks_width * blocks_height; idx++ )
    {
        ...
        Mat temp;
        RImages.push_back( imread( filename , 1 ) );
        hImages.push_back( cvtColor( RImages[ idx ], temp , CV_BGR2HSV ));
    }

我收到错误:

  

无效使用void表达式   在ctColor。

1 个答案:

答案 0 :(得分:4)

if (!alph.Contains(c)) 
{
    decrypted += c;
    continue;
}

此功能不返回任何内容。 cvtColor的结果存储在temp中。你的代码应该是这样的:

cvtColor( RImages[ idx ], temp , CV_BGR2HSV )
顺便说一句,您可以像这样优化您的代码:

vector<Mat> RImages;
vector<Mat> hImages;      

for ( int idx = 0; idx < blocks_width * blocks_height; idx++ )
{
    ...
    Mat temp;
    RImages.push_back( imread( filename , 1 ) );
    cvtColor( RImages[ idx ], temp , CV_BGR2HSV );
    hImages.push_back(temp  );
}