Máscara facial em opencv
Entrada: imagem do rosto
Problema: imagem limiar antes de aplicar o Canny para encontrar contornos, mas não retorna a máscara facial
Saída desejada se for inserido um rosto diferente, ele deverá gerar uma máscara facial adequada (área do rosto branca e fundo branco)
Tentei com a imagem da apple ... funciona bem
#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;
}
Aqui está a imagem que eu usei
Ignore os 3 primeiros comentários abaixo