2

コンポーネントあたり 8 ビット、4 チャネル (CV_8UC4) の RGB イメージから作成された cv::Mat があります。それをグレースタイル マットに変換した後、グレースタイル マットを 4 チャンネル マットに戻します。どうやってやるの?次のコードは、EXC_BAD_ACCESS に移動します。

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

1 に答える 1

3

データを変更する場合は、const 参照を使用できません。

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

編集:クリスチャン・ラウの入力のおかげで答えを修正しました。

于 2012-09-06T11:25:53.037 に答える