cv :: Mat преобразование в серый стиль

У меня есть cv :: Mat, созданный из изображения RGB с 8 битами на компонент, 4 каналами (CV_8UC4). Я хочу преобразовать его в серый стиль 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);
}

1

Решение

Вы не можете использовать константную ссылку, если хотите изменить данные:

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

Редактировать: Исправил ответ благодаря вкладу Кристиана Рау.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]