我有从RGB图像创建的cv :: Mat,每个组件8位,4个通道(CV_8UC4)。我想将它转换成灰色的Mat,然后将我的灰色Mat转换成4通道Mat。我怎样才能做到这一点?下面的代码将我带到EXC_BAD_ACCESS:
void myMethod(const Mat& mat) {
cv::Mat gray;
cv::cvtColor(mat, gray, CV_RGB2GRAY);
gray.copyTo(mat);
}
答案 0 :(得分:3)
如果要更改数据,则不能使用const引用:
void toGrayscale(cv::Mat& mat)
{
cv::Mat gray;
cv::cvtColor(mat, gray, CV_RGB2GRAY);
cv::cvtColor(gray, mat, CV_GRAY2RGB);
}
编辑:感谢Christian Rau的意见,纠正了答案。