马赛克处理
马赛克效果,其原理是将图像从形式上划分为很多小块(5*5),在每块内的各个像素都取到相同的红、绿、蓝颜色值,如块内任意一像素的值。从而对某些细节进行模糊化处理,使图像具有马赛克效果。
//马赛克
//
Mat Mosaic(Mat src, int rectangleLenth) {
Mat output(src.size(), CV_8UC3);
//取中心的像素值
for (int i = 0; i < src.rows; i += rectangleLenth) {
for (int j = 0; j < src.cols; j += rectangleLenth) {
//对矩形区域内的每一个像素值进行遍历
for (int k = i; k < rectangleLenth + i && k < src.rows; k++) {
for (int m = j; m < rectangleLenth + j && m < src.cols; m++) {
//在这里进行颜色的修改
output.at<Vec3b>(k, m)[0] = src.at<Vec3b>(i + rectangleLenth / 2, j + rectangleLenth / 2)[0];
output.at<Vec3b>(k, m)[1] = src.at<Vec3b>(i + rectangleLenth / 2, j + rectangleLenth / 2)[1];
output.at<Vec3b>(k, m)[2] = src.at<Vec3b>(i + rectangleLenth / 2, j + rectangleLenth / 2)[2];
}
}
}
}
return output;
}