我有cv::Mat由RGB图像创建,每个组件8位,4通道(CV_8UC4)。我想将其转换为Graystyle Mat,然后将我的Graystyle Mat存回4通道Mat。我怎样才能做到这一点?以下代码将我带到EXC_BAD_ACCESS:

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

最佳答案

如果要更改数据,则不能使用const引用:

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

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

关于c++ - cv::Mat graystyle转换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12298844/

10-12 21:53
查看更多