我正致力于光学标记识别。我的目的是从图像中提取红色圆圈并评估之后的黑色形状。检测红色圆圈并提取它们没有问题(图2),我成功地获得了红色像素透明的图像。问题是,当我将此图像转换为灰色时,透明像素变为黑色,因此在完成所有这些工作后没有任何变化(图片3)。我怎样才能将透明像素转换为白色或者我做错了什么?
Mat masked = new Mat(src.size(), CvType.CV_8UC3, new Scalar(255, 255, 255));
Mat hsv_image = new Mat();
Imgproc.cvtColor(src, hsv_image, Imgproc.COLOR_RGB2HSV);
// create mask starts
Mat lower_red_hue_range = new Mat();
Mat upper_red_hue_range = new Mat();
Core.inRange(hsv_image, new Scalar(0, 70, 70), new Scalar(10, 255, 255), lower_red_hue_range);
Core.inRange(hsv_image, new Scalar(160, 70, 70), new Scalar(179, 255, 255), upper_red_hue_range);
Mat red_hue_mask = new Mat();
Core.addWeighted(lower_red_hue_range, 1.0, upper_red_hue_range, 1.0, 0.0, red_hue_mask);
Core.bitwise_not(red_hue_mask, red_hue_mask);
Utils.saveAsBitmap(red_hue_mask); // picture1
// create mask ends
// apply mask to src
src.copyTo(masked, red_hue_mask);
Utils.saveAsBitmap(masked); // picture2 -> now it has transparent pixels
// convert to greyscale (transparent pixels become black :( )
Imgproc.cvtColor(masked, mBlacked, Imgproc.COLOR_RGB2GRAY);
Utils.saveAsBitmap(mBlacked); // picture3