Я написал код для сегментации водораздела в C API. Теперь я конвертирую все это в C++. поэтому, cvsaveimage становится imwrite. Но когда я использую imwrite, все, что я получаю, это черное изображение.imwrite in opencv дает черно-белое изображение
это код: -
Mat img8bit;
Mat img0;
img0 = imread("source.png", 1);
Mat wshed(img0.size(), CV_32S);
wshed.setTo(cv::Scalar::all(0));
////after performing watershed segmentation and
// displaying the watershed image from wshed//
wshed.convertTo(img8bit, CV_32FC3, 255.0);
imwrite("Watershed.png", img8bit);
оригинальный образ, который я хочу сохранить в wshed. Я видел предложения из сети, что нам нужно преобразовать его в 16 бит или выше, чтобы imwrite сохранил его правильно. Как вы видите, я попробовал это. Но изображение wshed отображается правильно при использовании imshow.The img0 - это серое изображение/черно-белое, а изображение wshed окрашено. любая помощь по этому поводу?
Edit- Я изменил 4-ю строчку в
Mat wshed(img0.size(), CV_32FC3);
8 бит проще всего для записи/отображения изображения! И на самом деле в вашем коде вы не конвертируете в 16 бит, а конвертируете в float. – Micka
'wshed.setTo (cv :: Scalar :: all (0));' делает все черным ... не так ли? – Mailerdaimon
@ micka- pls покажите мне, как это сделать. –