Smoothing edges change black color

asked 2016-12-07 12:44:39 -0500

OmerAslam gravatar image

updated 2018-10-26 15:51:42 -0500

I am getting foreground image from grabCut algorithm and then i apply below algorithm to smooth its edges. It is working fine and smoothing edges but it is also changing black color in the image.

You can see for this image it is working fine for this image image description but for this image it is changing black color image description
please tell me how to fix this.

This is my code for edge smoothing and i got it from Image edge smoothing with opencv

#include <iostream>
#include <vector>
#include <string>
#include <fstream>
#include <opencv2/opencv.hpp>

using namespace cv;
using namespace std;

int main(int argc, char **argv)

Mat originalImage = imread("../data/original_image_1.jpg");
Mat grabCutImage = imread("../data/grab_cut_image_1.png"); // got from grabcut algorithm

originalImage.convertTo(originalImage, CV_32FC3, 1.0 / 255.0);
resize(originalImage, originalImage, grabCutImage.size());
grabCutImage.convertTo(grabCutImage, CV_32FC3, 1.0 / 255.0);

Mat bg = Mat(grabCutImage.size(), CV_32FC3);
bg = Scalar(1.0, 1.0, 1.0);

Mat mask;
Mat img_gray;
cvtColor(grabCutImage, img_gray, COLOR_BGR2GRAY);
img_gray.convertTo(mask, CV_32FC1);
threshold(1.0 - mask, mask, 0.9, 1.0, THRESH_BINARY_INV);

GaussianBlur(mask, mask, Size(21, 21), 11.0);

Mat smooth;

vector<Mat> ch_img(3);
vector<Mat> ch_bg(3);
split(originalImage, ch_img);
split(bg, ch_bg);
ch_img[0] = ch_img[0].mul(mask) + ch_bg[0].mul(1.0 - mask);
ch_img[1] = ch_img[1].mul(mask) + ch_bg[1].mul(1.0 - mask);
ch_img[2] = ch_img[2].mul(mask) + ch_bg[2].mul(1.0 - mask);
merge(ch_img, smooth);
merge(ch_bg, bg);

imshow("originalImage", originalImage);
imshow("grabCutImage", grabCutImage);
imshow("smoothImage", smooth);

here are images i am using

image description image description image description image description

edit retag flag offensive close merge delete


plz tell me how to solve this issue

OmerAslam gravatar imageOmerAslam ( 2016-12-08 02:29:55 -0500 )edit