Маска для лица в opencv

Входные данные: изображение лица

Проблема: пороговое изображение перед применением Canny для поиска контуров, но не возвращает маску

Желаемый вывод если вводится другое лицо, оно должно генерировать правильную маску лица (область лица белая и фон белый)

Пробовал с яблочной картиной .. отлично работает

            #include <opencv2/highgui/highgui.hpp>
            #include <opencv2/core/core.hpp>
            #include <opencv2/imgproc/imgproc.hpp>

            using namespace cv;
            using namespace std;

            int main(){
              Mat right=imread("front.jpg");
              Mat img1;
              cvtColor(right, img1, CV_RGB2GRAY);
              threshold(img1,img1,160,255,cv::THRESH_BINARY);
              Canny(img1, img1, 128, 350);
              vector< vector<Point> > contours;
              findContours(img1, contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);
              Mat mask = Mat::zeros(img1.rows, img1.cols, CV_8UC1);
              drawContours(mask, contours, -1, Scalar(255), CV_FILLED);
              normalize(mask.clone(), mask, 0.0, 255.0, CV_MINMAX, CV_8UC1);

              imshow("original", right);
              imshow("thresh",img1);
              imshow("mask", mask);

              waitKey(0);
              return 0;
    }

Вот изображение, которое я использовал

Пожалуйста, игнорируйте первые 3 комментария ниже

Ответы на вопрос(1)

Ваш ответ на вопрос