在opencv :: Mat中使一个矩形为零而没有循环

时间:2014-02-01 06:48:53

标签: c++ opencv

制作opencv :: Mat零特殊块的有效方法是什么? (没有循环)

Mat freq;

// Set some frequencies to 0
for (int y=0; y<freq.rows; y++)
{
    for (int x=Start; x<freq.cols; x++)
    {
        if (x>Start || y>Start)
            freq.at<double>(y,x) = 0.0;
    }
}
// Set some frequencies to 0
for (int y=Start; y<freq.rows; y++)
{
    for (int x=0; x<freq.cols; x++)
    {
        freq.at<double>(y,x) = 0.0;
    }
}

2 个答案:

答案 0 :(得分:2)

试试以下代码

Mat src;
Mat roi  = src(Rect(x,y,width,height)); // Set Roi
roi.setTo(0); // Set all pixel to 0 on both src and roi

答案 1 :(得分:0)

您可以创建零矩阵。 Here是链接。您可以将整个矩阵设为零或创建一个较小的零矩阵,并将其分配给原始矩阵的所需部分。