# Revision history [back]

### How to convert Floating point image to 32-bit single-channel?

I'm doing a watershed segmentation and the marker image is derived from the source image put through a distance transform. The distance transform returns a floating point image (I have no idea about the bit-depth) and I have trouble putting it through the watershed method since it requires a 32 bit single channel image.

Can I use the mat's convertTo method to set the bit depth to 32? I also have trouble trying to display the floating point image since the matToBitmap() method doesn't seem to accept them.

    Mat mImg = new Mat();
Mat mThresh = new Mat();
Mat mDist = new Mat();

ImageView imgView = (ImageView) findViewById(R.id.imageView);
Bitmap bmpIn = BitmapFactory.decodeResource(getResources(),
R.drawable.w1);

Utils.bitmapToMat(bmpIn, mImg);

Imgproc.cvtColor(mImg, mImg, Imgproc.COLOR_BGR2GRAY);
Imgproc.threshold(mImg, mThresh, 0, 255, Imgproc.THRESH_BINARY
| Imgproc.THRESH_OTSU);

//Marker image for watershed

//Conversions for watershed
Imgproc.cvtColor(mThresh, mThresh, Imgproc.COLOR_GRAY2BGR, 3);

//Floating-point image -> 32-bit single-channel
mDist.convertTo(...);

Imgproc.watershed(mThresh, mDist); //

Bitmap bmpOut = Bitmap.createBitmap(mThresh.cols(), mThresh.rows(),
Bitmap.Config.ARGB_8888);

Utils.matToBitmap(mThresh, bmpOut);
imgView.setImageBitmap(bmpOut);

 2 retagged Kirill Kornyakov 2752 ●13 ●24 ●52

### How to convert Floating point image to 32-bit single-channel?

I'm doing a watershed segmentation and the marker image is derived from the source image put through a distance transform. The distance transform returns a floating point image (I have no idea about the bit-depth) and I have trouble putting it through the watershed method since it requires a 32 bit single channel image.

Can I use the mat's convertTo method to set the bit depth to 32? I also have trouble trying to display the floating point image since the matToBitmap() method doesn't seem to accept them.

    Mat mImg = new Mat();
Mat mThresh = new Mat();
Mat mDist = new Mat();

ImageView imgView = (ImageView) findViewById(R.id.imageView);
Bitmap bmpIn = BitmapFactory.decodeResource(getResources(),
R.drawable.w1);

Utils.bitmapToMat(bmpIn, mImg);

Imgproc.cvtColor(mImg, mImg, Imgproc.COLOR_BGR2GRAY);
Imgproc.threshold(mImg, mThresh, 0, 255, Imgproc.THRESH_BINARY
| Imgproc.THRESH_OTSU);

//Marker image for watershed

//Conversions for watershed
Imgproc.cvtColor(mThresh, mThresh, Imgproc.COLOR_GRAY2BGR, 3);

//Floating-point image -> 32-bit single-channel
mDist.convertTo(...);

Imgproc.watershed(mThresh, mDist); //

Bitmap bmpOut = Bitmap.createBitmap(mThresh.cols(), mThresh.rows(),
Bitmap.Config.ARGB_8888);

Utils.matToBitmap(mThresh, bmpOut);
imgView.setImageBitmap(bmpOut);