想起恶魔就是浑身一团一团的黑气围绕。
所以对于图像恶魔化,就是检测出来尽可能多的边缘,然后使上一篇中的漫画形式转变为恶魔形式。
void evilImage(const cv::Mat &srcImg,const cv::Mat &cartoonImg,cv::Mat& resultImg){
Mat grayImg;
cvtColor(srcImg,grayImg,CV_BGR2GRAY);
medianBlur(grayImg,grayImg,7);
Mat edgeImg,edgeImg2;
Scharr(grayImg,edgeImg,CV_8U,1,0);
Scharr(grayImg,edgeImg2,CV_8U,0,1);
edgeImg +=edgeImg2;
Mat maskImg;
threshold(edgeImg,maskImg,12,255,THRESH_BINARY_INV);
medianBlur(maskImg,maskImg,3);
resultImg.setTo(0);
cartoonImg.copyTo(resultImg,maskImg);
}
scharr就是对图像的X,Y方向分别滤波,默认是3*3的核。这就能够尽量多的检测出来边缘。
原理跟漫画化是一样的。
结果:
scharr结果: