cv::Mat灰色风格转换

cv::Mat graystyle conversion

本文关键字:转换 风格 Mat cv 灰色      更新时间:2023-10-16

我有从RGB图像创建的cv::Mat,每个分量8位,4个通道(cv_8UC4)。我想把它转换成灰色垫子,然后把我的灰色垫子存回4通道垫子。我该怎么做?下面的代码将我带到EXC_BAD_ACCESS:

void myMethod(const Mat& mat) {
      cv::Mat gray;
      cv::cvtColor(mat, gray, CV_RGB2GRAY);
      gray.copyTo(mat);
}

如果您想更改数据,则不能使用常量引用:

void toGrayscale(cv::Mat& mat)
{
     cv::Mat gray;
     cv::cvtColor(mat, gray, CV_RGB2GRAY);
     cv::cvtColor(gray, mat, CV_GRAY2RGB);
}

编辑:由于Christian Rau的输入,更正了答案。