こんにちは、画像セグメンテーションは初めてです。指定されたコードを使用して前景オブジェクトを取得しようとしていますが、「cvWatershed でサポートされていない形式または形式の組み合わせ (8 ビット、3 チャネルの入力画像のみがサポートされています)」のようなエラーが発生しました。
cv::Mat img0 = [img toMat];
cv::Mat img1;
cv::cvtColor(img0, img0, CV_RGB2GRAY);
cv::threshold(img0, img0, 100, 255, cv::THRESH_BINARY);
cv::Mat fg;
cv::erode(img0,fg,cv::Mat(),cv::Point(-1,-1),6);
cv::Mat bg;
cv::dilate(img0,bg,cv::Mat(),cv::Point(-1,-1),6);
cv::threshold(bg,bg,1,128,cv::THRESH_BINARY_INV);
cv::Mat markers(img0.size(),CV_8U,cv::Scalar(0));
markers= fg+bg;
// cv::namedWindow("マーカー"); // cv::imshow("マーカー", マーカー);
WatershedSegmenter segmenter;
segmenter.setMarkers(markers);
cv::Mat result1 = segmenter.process(img0);
// cv::Mat 結果 1; result1.convertTo(result1,CV_8U);
UIImage * result = [UIImage imageWithMat:result1 andImageOrientation:[img imageOrientation]];
return result;
そして、デバッグを試みたところ、エラーが発生しました
cv::Mat result1 = segmenter.process(img0);
前もって感謝します